diff --git a/.arclint b/.arclint index 8a7c2ab8bee7..59bf888d6d1b 100644 --- a/.arclint +++ b/.arclint @@ -33,6 +33,7 @@ "(^managed/RUNTIME-FLAGS[.]md$)", "(^managed/yba-cli/docs/.*)", "(^managed/yba-cli/.*/LICENSE$)", + "(^managed/yba-cli/NOTICE$)", "(^managed/yba-cli/internal/formatter/tabwriter/*)", "(^managed/yba-cli/internal/formatter/templates/*)", "(^[.]clang-tidy)", diff --git a/.github/workflows/create-repository-dispatch.yml b/.github/workflows/create-repository-dispatch.yml index 789f7edfb0da..0dd735d6d2c2 100644 --- a/.github/workflows/create-repository-dispatch.yml +++ b/.github/workflows/create-repository-dispatch.yml @@ -7,25 +7,6 @@ jobs: createRepositoryDispatch: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - name: "Determine release train" - id: yb_train - run: | - my_ver=$(cat version.txt) - git fetch --depth=1 origin master - main_ver=$(git show origin/master:managed/src/main/resources/version.txt) - if [[ "$main_ver" == "$my_ver" ]]; then - train="master" - else - if [[ $my_ver =~ ^([0-9]+\.[0-9]+)\.* ]]; then - train="${BASH_REMATCH[1]}" - else - echo "Could not find release version from version.txt" - exit 1 - fi - fi - echo "Release train determined: $train" - echo "yb_train=${train}" >> "$GITHUB_ENV" - name: "Trigger Repository Dispatch - yugabyte/terraform-gcp-yugabyte" run: | @@ -34,8 +15,7 @@ jobs: -H "Content-Type: application/json" https://api.github.com/repos/yugabyte/terraform-gcp-yugabyte/dispatches \ --data '{"event_type": "build-on-release", "client_payload": {"prerelease": "${{ github.event.release.prerelease }}", - "release": "${{github.event.release.tag_name}}", - "yb_release_train": "'${yb_train}'" } }' + "release": "${{github.event.release.tag_name}}" } }' - name: "Trigger Repository Dispatch - yugabyte/terraform-aws-yugabyte" run: | @@ -44,8 +24,7 @@ jobs: -H "Content-Type: application/json" https://api.github.com/repos/yugabyte/terraform-aws-yugabyte/dispatches \ --data '{"event_type": "build-on-release", "client_payload": {"prerelease": "${{ github.event.release.prerelease }}", - "release": "${{github.event.release.tag_name}}", - "yb_release_train": "'${yb_train}'" } }' + "release": "${{github.event.release.tag_name}}" } }' - name: "Trigger Repository Dispatch - yugabyte/terraform-azure-yugabyte" run: | @@ -54,8 +33,7 @@ jobs: -H "Content-Type: application/json" https://api.github.com/repos/yugabyte/terraform-azure-yugabyte/dispatches \ --data '{"event_type": "build-on-release", "client_payload": {"prerelease": "${{ github.event.release.prerelease }}", - "release": "${{github.event.release.tag_name}}", - "yb_release_train": "'${yb_train}'" } }' + "release": "${{github.event.release.tag_name}}" } }' - name: "Trigger Repository Dispatch - yugabyte/azure-resource-manager" run: | @@ -64,8 +42,7 @@ jobs: -H "Content-Type: application/json" https://api.github.com/repos/yugabyte/azure-resource-manager/dispatches \ --data '{"event_type": "build-on-release", "client_payload": {"prerelease": "${{ github.event.release.prerelease }}", - "release": "${{github.event.release.tag_name}}", - "yb_release_train": "'${yb_train}'" } }' + "release": "${{github.event.release.tag_name}}" } }' - name: "Trigger Repository Dispatch - yugabyte/gcp-deployment-manager" run: | @@ -74,8 +51,7 @@ jobs: -H "Content-Type: application/json" https://api.github.com/repos/yugabyte/gcp-deployment-manager/dispatches \ --data '{"event_type": "build-on-release", "client_payload": {"prerelease": "${{ github.event.release.prerelease }}", - "release": "${{github.event.release.tag_name}}", - "yb_release_train": "'${yb_train}'" } }' + "release": "${{github.event.release.tag_name}}" } }' - name: "Trigger Repository Dispatch - yugabyte/aws-cloudformation" run: | @@ -84,8 +60,7 @@ jobs: -H "Content-Type: application/json" https://api.github.com/repos/yugabyte/aws-cloudformation/dispatches \ --data '{"event_type": "build-on-release", "client_payload": {"prerelease": "${{ github.event.release.prerelease }}", - "release": "${{github.event.release.tag_name}}", - "yb_release_train": "'${yb_train}'" } }' + "release": "${{github.event.release.tag_name}}" } }' - name: "Trigger Repository Dispatch - yugabyte/homebrew-tap" run: | @@ -94,22 +69,13 @@ jobs: -H "Content-Type: application/json" https://api.github.com/repos/yugabyte/homebrew-tap/dispatches \ --data '{"event_type": "update-on-release", "client_payload": {"prerelease": "${{ github.event.release.prerelease }}", - "release": "${{github.event.release.tag_name}}", - "yb_release_train": "'${yb_train}'" } }' - - - name: "Trigger Repository Dispatch - yugabyte/charts" - run: | - curl -XPOST -u "${{ secrets.PAT_USERNAME}}:${{secrets.PAT_TOKEN}}" \ - -H "Accept: application/vnd.github.everest-preview+json" \ - -H "Content-Type: application/json" https://api.github.com/repos/yugabyte/charts/dispatches \ - --data '{"event_type": "update-on-release", "client_payload": - {"prerelease": "${{ github.event.release.prerelease }}", - "release": "${{github.event.release.tag_name}}", - "yb_release_train": "'${yb_train}'" } }' + "release": "${{github.event.release.tag_name}}" } }' - name: "Trigger Repository Dispatch - yugabyte/yugabyte-operator" run: | curl -XPOST -u "${{ secrets.PAT_USERNAME}}:${{secrets.PAT_TOKEN}}" \ -H "Accept: application/vnd.github.everest-preview+json" \ -H "Content-Type: application/json" https://api.github.com/repos/yugabyte/yugabyte-operator/dispatches \ - --data '{"event_type": "update-on-release", "client_payload": {"prerelease": "${{ github.event.release.prerelease }}", "release": "${{github.event.release.tag_name}}" }}' + --data '{"event_type": "update-on-release", "client_payload": + {"prerelease": "${{ github.event.release.prerelease }}", + "release": "${{github.event.release.tag_name}}" }}' diff --git a/bin/yugabyted b/bin/yugabyted index 4e174c41db5d..aa178100dc65 100755 --- a/bin/yugabyted +++ b/bin/yugabyted @@ -2364,6 +2364,8 @@ class ControlScript(object): get("master_webserver_port")), "-tserver_ui_port={}".format(self.configs.saved_data. get("tserver_webserver_port")), + "-data_dir={}".format(self.configs.saved_data. + get("data_dir")), "-warnings={}".format("|".join(warnings_for_ui)) ] if self.configs.saved_data.get("secure"): diff --git a/build-support/tsan-suppressions.txt b/build-support/tsan-suppressions.txt index 8206ccdb16f5..2b0fb636de41 100644 --- a/build-support/tsan-suppressions.txt +++ b/build-support/tsan-suppressions.txt @@ -89,6 +89,9 @@ race:yb::ExternalDaemon::LogTailerThread::LogTailerThread # Known well implemented lock-free containers race:boost::lockfree +# Suppress TSAN data race in boost::regex_match (potential false positive) +race:boost::regex_detail_500::saved_state::saved_state + # ------------------------------------------------------------------------------------------------- # Supressions from libcds: diff --git a/docs/.npmrc b/docs/.npmrc new file mode 100644 index 000000000000..87dca9e28347 --- /dev/null +++ b/docs/.npmrc @@ -0,0 +1,2 @@ +@fortawesome:registry=https://npm.fontawesome.com/ +//npm.fontawesome.com/:_authToken=624632FA-A763-410F-9ABA-C486C9538C86 \ No newline at end of file diff --git a/docs/assets/scss/_code_block.scss b/docs/assets/scss/_code_block.scss index 24f240bf1d39..857ce3f57859 100644 --- a/docs/assets/scss/_code_block.scss +++ b/docs/assets/scss/_code_block.scss @@ -199,7 +199,7 @@ main { position: absolute; top: 0; left: 0; - font: 15px/1 "Font awesome 6 free"; + font: 15px/1 $font-awesome-font-name; font-weight: 700; content: "\f00c"; color: #48ab52 !important; diff --git a/docs/assets/scss/_dropdown_list.scss b/docs/assets/scss/_dropdown_list.scss index 432230e457a6..1f03bc047d0a 100644 --- a/docs/assets/scss/_dropdown_list.scss +++ b/docs/assets/scss/_dropdown_list.scss @@ -74,7 +74,7 @@ vertical-align: 0.255em; content: "\f107"; color: #97a5b0; - font-family: "Font Awesome 6 Free"; + font-family: $font-awesome-font-name; border: 0; } } diff --git a/docs/assets/scss/_nav.scss b/docs/assets/scss/_nav.scss index bc5f916ed5d9..daafc35defb6 100644 --- a/docs/assets/scss/_nav.scss +++ b/docs/assets/scss/_nav.scss @@ -5,6 +5,10 @@ display: none; } +.mobile-search.desktop-hide { + display: none !important; +} + .hidden-scroll { overflow: hidden; @@ -1086,7 +1090,7 @@ body { @media (max-width: 767px) { .mobile-search.desktop-hide { - display: block; + display: block !important; } aside.td-sidebar { diff --git a/docs/assets/scss/_sidebar-tree.scss b/docs/assets/scss/_sidebar-tree.scss index 41724ac96b46..7c35f252be20 100644 --- a/docs/assets/scss/_sidebar-tree.scss +++ b/docs/assets/scss/_sidebar-tree.scss @@ -73,7 +73,7 @@ width: 10px; color: #6d7c88; height: 10px; - font-family: "Font Awesome 6 Free"; + font-family: $font-awesome-font-name; transition: margin-right 0.2s linear; font-size: 11px; line-height: 10px; @@ -206,7 +206,7 @@ &::before { content: "\f0da"; - font-family: "Font Awesome 6 Free"; + font-family: $font-awesome-font-name; color: #97a5b0; } } diff --git a/docs/assets/scss/_styles_project.scss b/docs/assets/scss/_styles_project.scss index 23cf7d51fda4..930917ffe6cc 100644 --- a/docs/assets/scss/_styles_project.scss +++ b/docs/assets/scss/_styles_project.scss @@ -1,3 +1,17 @@ +// Font Awesome Pro +@import "../vendor/Font-Awesome-Pro/scss/fontawesome.scss"; +@import "../vendor/Font-Awesome-Pro/scss/brands.scss"; +@import "../vendor/Font-Awesome-Pro/scss/duotone.scss"; +@import "../vendor/Font-Awesome-Pro/scss/light.scss"; +@import "../vendor/Font-Awesome-Pro/scss/regular.scss"; +@import "../vendor/Font-Awesome-Pro/scss/sharp-light.scss"; +@import "../vendor/Font-Awesome-Pro/scss/sharp-regular.scss"; +@import "../vendor/Font-Awesome-Pro/scss/sharp-solid.scss"; +@import "../vendor/Font-Awesome-Pro/scss/sharp-thin.scss"; +@import "../vendor/Font-Awesome-Pro/scss/solid.scss"; +@import "../vendor/Font-Awesome-Pro/scss/thin.scss"; +@import "../vendor/Font-Awesome-Pro/scss/v4-shims.scss"; + @import "./_yb_headings.scss"; @import "./_yb_bullets-and-number-list.scss"; @import "./_dropdown_list.scss"; @@ -134,6 +148,15 @@ html { img { max-width: 66px; height: auto; + } + + > i[class^="fa-"] { + font-size: 75px; + color: $YB_ORANGE; + } + + > i.fa-brands { + font-size: 86px; } } diff --git a/docs/assets/scss/_variables_project.scss b/docs/assets/scss/_variables_project.scss index 039ef7a13b82..4c7e4ebcec27 100644 --- a/docs/assets/scss/_variables_project.scss +++ b/docs/assets/scss/_variables_project.scss @@ -1,5 +1,7 @@ $primary: #fe6f42; $secondary: #312965; +$fa-font-path: "../webfonts/Font-Awesome-Pro"; +$font-awesome-font-name: "Font Awesome 6 Pro"; $google_font_name: "Inter"; $google_font_family: "Inter:100,200,300,400,500,600,700,800,900"; diff --git a/docs/config/_default/config.toml b/docs/config/_default/config.toml index 2f7bd7479658..3a5e09d9fe95 100644 --- a/docs/config/_default/config.toml +++ b/docs/config/_default/config.toml @@ -28,6 +28,15 @@ enableGitInfo = true [[module.imports]] path = "github.com/trunkcode/hugo-seo" disable = false + [[module.imports]] + path = "../node_modules/@fortawesome/fontawesome-pro" + disable = false + [[module.imports.mounts]] + source = "scss" + target = "assets/vendor/Font-Awesome-Pro/scss" + [[module.imports.mounts]] + source = "webfonts" + target = "static/webfonts/Font-Awesome-Pro" [markup.goldmark.parser.attribute] block = true diff --git a/docs/config/_default/menus.toml b/docs/config/_default/menus.toml index 6b0b4bf02fe3..fb4fcf8b1d42 100644 --- a/docs/config/_default/menus.toml +++ b/docs/config/_default/menus.toml @@ -340,7 +340,7 @@ name = "YugabyteDB" weight = 4 identifier = "yugabytedb" - url = "/stable/" + url = "/preview/" [home.params] showSection = true @@ -348,7 +348,7 @@ name = "YugabyteDB Anywhere" weight = 5 identifier = "yugabytedb-anywhere" - url = "/stable/yugabyte-platform/" + url = "/preview/yugabyte-platform/" [home.params] showSection = true diff --git a/docs/config/_default/params.toml b/docs/config/_default/params.toml index 552df26c981e..0ce7c878a6f4 100644 --- a/docs/config/_default/params.toml +++ b/docs/config/_default/params.toml @@ -49,12 +49,12 @@ version_menu_pagelinks = true sidebar_search_disable = true ul_show = 1 +[[versions]] + url = "/preview" + version = "v2.21 (Preview)" [[versions]] url = "/stable" version = "v2.20 (LTS)" -[[versions]] - url = "/preview" - version = "v2.19 (Preview)" [[versions]] url = "/v2.18" version = "v2.18 (STS)" @@ -72,8 +72,10 @@ version_menu_pagelinks = true # Custom params, regardless of theme [yb] terms_of_service = "https://www.yugabyte.com/terms-of-service/" - preview_version = "v2.19" - preview_version_slug = "stable" + preview_version = "v2.21" + preview_version_slug = "preview" + # To disable heading/title icons for particular page, define `hideHeadingIcon: true` on that page params. + heading_icons = true # Header logo link [yb.navbar_logo] diff --git a/docs/content/preview/admin/yb-admin.md b/docs/content/preview/admin/yb-admin.md index 2dcdc34daf19..d4e1c33a6e39 100644 --- a/docs/content/preview/admin/yb-admin.md +++ b/docs/content/preview/admin/yb-admin.md @@ -1661,7 +1661,7 @@ Encryption status: ENABLED with key id #### create_change_data_stream -Creates a change data capture (CDC) DB stream for the specified table. +Create a change data capture (CDC) DB stream for the specified namespace using the following command. **Syntax** @@ -1682,7 +1682,32 @@ For example: create_change_data_stream ysql.yugabyte ``` +##### Creating a stream for Transactional CDC +Create a change data capture (CDC) DB stream for the specified namespace that can be used for Transactional CDC using the following command. +This feature is {{}}. Use the [yb_enable_cdc_consistent_snapshot_streams](../../reference/configuration/yb-tserver/#yb-enable-cdc-consistent-snapshot-streams) flag to enable the feature. + +**Syntax** + +```sh +yb-admin \ + -master_addresses \ + create_change_data_stream ysql. EXPLICIT CHANGE USE_SNAPSHOT +``` + +* *master-addresses*: Comma-separated list of YB-Master hosts and ports. Default value is `localhost:7100`. +* *namespace_name*: The namespace on which the DB stream ID is to be created. +* `EXPLICIT`: Checkpointing type on the server. +* `CHANGE`: Record type indicating to the server that the stream should send only the new values of the changed columns. +* `USE_SNAPSHOT`: Snapshot option indicating intention of client to consume the snapshot. If you don't want the client to consume the snapshot, use the `NOEXPORT_SNAPSHOT` option. + +For example: + +```sh +./bin/yb-admin \ + -master_addresses 127.0.0.1:7100 \ + create_change_data_stream ysql.yugabyte EXPLICIT CHANGE USE_SNAPSHOT +``` ##### Enabling before image @@ -1699,7 +1724,7 @@ yb-admin \ * *master-addresses*: Comma-separated list of YB-Master hosts and ports. Default value is `localhost:7100`. * *namespace_name*: The namespace on which the DB stream ID is to be created. * `IMPLICIT`: Checkpointing type on the server. -* `ALL`: Record type indicating the server that the stream should send the before image too. +* `ALL`: Record type indicating to the server that the stream should send the before image too. A successful operation of the above command returns a message with a DB stream ID: diff --git a/docs/content/preview/api/ycql/ddl_create_index.md b/docs/content/preview/api/ycql/ddl_create_index.md index 90b901679cd9..0a19ef0518fe 100644 --- a/docs/content/preview/api/ycql/ddl_create_index.md +++ b/docs/content/preview/api/ycql/ddl_create_index.md @@ -56,20 +56,20 @@ Use the `CREATE INDEX` statement to create a new index on a table. It defines th ### Grammar ```ebnf -create_index ::= CREATE [ UNIQUE ] [ DEFERRED ] INDEX - [ IF NOT EXISTS ] index_name ON table_name ( - partition_key_columns , [ clustering_key_columns ] ) - [ covering_columns ] [ index_properties ] +create_index ::= CREATE [ UNIQUE ] [ DEFERRED ] INDEX + [ IF NOT EXISTS ] index_name ON table_name ( + partition_key_columns , [ clustering_key_columns ] ) + [ covering_columns ] [ index_properties ] [ WHERE index_predicate ] partition_key_columns ::= index_column | ( index_column [ , ... ] ) clustering_key_columns ::= index_column [ , ... ] -index_properties ::= WITH +index_properties ::= WITH { property_name = property_literal - | CLUSTERING ORDER BY ( - { index_column [ ASC | DESC ] } [ , ... ] ) } + | CLUSTERING ORDER BY ( + { index_column [ ASC | DESC ] } [ , ... ] ) } [ AND ... ] index_column ::= column_name | jsonb_attribute @@ -83,8 +83,8 @@ index_predicate ::= where_expression Where -- `index_name`, `table_name`, `property_name`, and `column_name` are identifiers. -- `table_name` may be qualified with a keyspace name. +- `index_name`, `table_name`, `property_name`, and `column_name` are identifiers. +- `table_name` may be qualified with a keyspace name. - `index_name` cannot be qualified with a keyspace name because an index must be created in the table's keyspace. - `property_literal` is a literal of either [boolean](../type_bool), [text](../type_text), or [map](../type_collection) data type. - `index_column` can be any data type except `MAP`, `SET`, `LIST`, `JSONB`, `USER_DEFINED_TYPE`. @@ -101,7 +101,11 @@ When an index is created on an existing table, YugabyteDB will automatically bac {{< /note >}} -### User enforced consistency +### User-enforced consistency + +{{}} +Opt for user-enforced consistency only when there is no other solution to your problem. User-enforced consistency requires considerable user effort to keep the index and table in sync. +{{}} Indexes require transactions to have been enabled on the table. For cases where the table was created without enabling transactions, `consistency_level` has to be set to `user_enforced` like, @@ -111,8 +115,10 @@ CREATE INDEX ON orders (warehouse) WITH transactions = { 'enabled' : false, 'consistency_level' : 'user_enforced' }; ``` -{{< warning >}} -When using an index without transactions enabled, it is the responsibility of the application to retry any insert/update/delete failures to make sure that the table and index are in sync. +{{< warning title="Syncing table and index">}} +When using an index without transactions enabled, it is the responsibility of the application to retry any insert/update/delete failures to make sure that the table and index are in sync. + +Also, if the index is created after data has been added to the table, the index may **not** be backfilled automatically depending on the setting of the `disable_index_backfill_for_non_txn_tables` flag. If set to `true`, then it is the responsibility of the user to trigger a backfill using the [yb-admin backfill_indexes_for_table](../../../admin/yb-admin/#backfill-indexes-for-table) command, which will trigger the backfill after a small delay of about a minute. This delay is controlled by the `index_backfill_upperbound_for_user_enforced_txn_duration_ms` flag. {{< /warning >}} ### PARTITION KEY @@ -133,7 +139,7 @@ When using an index without transactions enabled, it is the responsibility of th - When setting a TTL on the index using `default_time_to_live`, please ensure that the TTL value is the same as that of the table's TTL. If they are different, it would lead to the index and the table being out of sync and would lead to unexpected behavior. {{}} -**Caveat** : Row level TTL cannot be set on a table with a secondary indexes during INSERTS/UPDATES. {{}} +**Caveat**: Row-level TTL cannot be set on a table with a secondary index during INSERTS/UPDATES. {{}} {{}} ### INCLUDED COLUMNS @@ -158,11 +164,11 @@ After creating a set of indexes with their backfill deferred, you can then trigg CREATE DEFERRED INDEX idx_1 on table_name(col_1); // No backfill launched. CREATE DEFERRED INDEX idx_2 on table_name(col_2); // No backfill launched. CREATE DEFERRED INDEX idx_9 on table_name(col_9); // No backfill launched. - - + + // To launch backfill ... - CREATE INDEX idx_10 on table_name(col_10); // Will launch backfill for idx_10 and - // all deferred indexes idx_1 .. idx_9 + CREATE INDEX idx_10 on table_name(col_10); // Will launch backfill for idx_10 and + // all deferred indexes idx_1 .. idx_9 // on the same table viz: table_name. ``` diff --git a/docs/content/preview/architecture/docdb-replication/async-replication.md b/docs/content/preview/architecture/docdb-replication/async-replication.md index 9bc18a6c59ae..32f3bc166513 100644 --- a/docs/content/preview/architecture/docdb-replication/async-replication.md +++ b/docs/content/preview/architecture/docdb-replication/async-replication.md @@ -228,6 +228,10 @@ In the future, it may be possible to detect such unsafe constraints and issue a Note that if you attempt to insert the same row on both universes at the same time to a table that does not have a primary key then you will end up with two rows with the same data. This is the expected PostgreSQL behavior — tables without primary keys can have multiple rows with the same data. +### Materialized views are not supported + +Setting up xCluster replication for [materialized views](../../../explore/ysql-language-features/advanced-features/views/#materialized-views) is currently not supported. When setting up replication for a database, materialized views need to be excluded. YugabyteDB Anywhere automatically excludes materialized views from replication setup. + ### Non-transactional–mode consistency issues When interacting with data replicated from another universe using non-transactional mode: diff --git a/docs/content/preview/architecture/docdb-sharding/colocated-tables.md b/docs/content/preview/architecture/docdb-sharding/colocated-tables.md index 8b9c7f139302..4b6524cb831f 100644 --- a/docs/content/preview/architecture/docdb-sharding/colocated-tables.md +++ b/docs/content/preview/architecture/docdb-sharding/colocated-tables.md @@ -99,6 +99,20 @@ You can create a backup of a database that was colocated with the deprecated syn {{< /warning >}} +To check if a database is colocated or not, you can use the `yb_is_database_colocated` function as follows: + +```sql +select yb_is_database_colocated(); +``` + +You should see an output similar to the following: + +```output + yb_is_database_colocated +-------------------------- + t +``` + ### Tables All the tables in a colocated database are colocated by default. There is no need to enable colocation when creating tables. You can choose to opt specific tables out of colocation in a colocated database. To do this, use the following command: @@ -119,6 +133,20 @@ CREATE TABLE (columns) WITH (colocated = ) {{< /warning >}} +To check if a table is colocated or not, you can use the [`\d`](../../../admin/ysqlsh-meta-commands/#d-s-pattern-patterns) meta-command in [ysqlsh](../../../admin/ysqlsh). You can also retrieve the same information using the `yb_table_properties` function as follows: + +```sql +select is_colocated from yb_table_properties('table_name'::regclass); +``` + +You should see an output similar to the following: + +```output + is_colocated +-------------- + f +``` + #### Change table colocation To remove a single table from a colocation (for example, if it increases beyond a certain size), you can create a copy of the table using `CREATE TABLE AS SELECT` with colocation set to false. Do the following: diff --git a/docs/content/preview/contribute/docs/docs-layout.md b/docs/content/preview/contribute/docs/docs-layout.md index bafdd89792bd..6438b1a71ce5 100644 --- a/docs/content/preview/contribute/docs/docs-layout.md +++ b/docs/content/preview/contribute/docs/docs-layout.md @@ -43,6 +43,12 @@ Here are some examples of reference docs in our documentation: We also have design docs [in GitHub](https://github.com/yugabyte/yugabyte-db/tree/master/architecture/design). These design docs should be referenced from the Reference section in the docs. +## Legend for illustrations + +Many of the illustrations in the docs use the following legend to represent tablet leaders and followers, cloud regions and zones, and applications. + +![Legend for illustrations](/images/develop/global-apps/global-database-legend.png) + ## Next steps Now that you know where your page should go, [build the docs](../docs-build/) locally and [start editing](../docs-edit/). diff --git a/docs/content/preview/deploy/kubernetes/single-zone/oss/helm-chart.md b/docs/content/preview/deploy/kubernetes/single-zone/oss/helm-chart.md index 2a9c7ee17b65..c4edaf0786d2 100644 --- a/docs/content/preview/deploy/kubernetes/single-zone/oss/helm-chart.md +++ b/docs/content/preview/deploy/kubernetes/single-zone/oss/helm-chart.md @@ -28,7 +28,7 @@ type: docs
  • - Kubernetes Operator (legacy) + Kubernetes Operator
  • diff --git a/docs/content/preview/deploy/kubernetes/single-zone/oss/yugabyte-operator.md b/docs/content/preview/deploy/kubernetes/single-zone/oss/yugabyte-operator.md index 26e0aab07724..9bf764095e6e 100644 --- a/docs/content/preview/deploy/kubernetes/single-zone/oss/yugabyte-operator.md +++ b/docs/content/preview/deploy/kubernetes/single-zone/oss/yugabyte-operator.md @@ -28,14 +28,16 @@ type: docs
  • - Kubernetes Operator (legacy) + Kubernetes Operator
  • -The Kubernetes Operator for YugabyteDB is no longer maintained. It is recommended that you use the actively maintained [Helm charts](../helm-chart/) for YugabyteDB to install YugabyteDB on Kubernetes. For documentation on using the Kubernetes Operator for YugabyteDB, refer to the [GitHub repository](https://github.com/yugabyte/yugabyte-operator). +A preliminary version of the YugabyteDB Kubernetes Operator is available in [Tech Preview](/preview/releases/versioning/#feature-availability) (not recommended for production use). The operator automates the deployment, scaling, and management of YugabyteDB clusters in Kubernetes environments. It streamlines database operations, reducing manual effort for developers and operators. -A newer version of the Kubernetes Operator for YugabyteDB is in development. +For more information, refer to the [YugabyteDB Kubernetes Operator](https://github.com/yugabyte/yugabyte-k8s-operator) GitHub project. + + +{{