Add database-related resource reference docs (#65460)

Add a resource reference generator config for `db_service` and `db`, and
generate pages for those resources.

Configure an introduction for the `db_server` page so that all
database-related resource reference docs have introductions that point
to related pages.
This commit is contained in:
Paul Gottschling
2026-04-28 12:43:30 +00:00
committed by GitHub
parent f49c71e6f0
commit 31e2ff0675
4 changed files with 819 additions and 1 deletions
@@ -53,10 +53,62 @@ resources:
registered with your Teleport cluster. It is possible to read and list
`bot_instance` resources with `tctl` but not to create, modify, or delete
them.
- type: DatabaseV3
package: github.com/gravitational/teleport/api/types
yaml_kind: db
yaml_version: v3
introduction: |
The `db` resource represents a database that is dynamically registered
with Teleport.
If you configure the Teleport Database Service with **dynamic resource
watchers**, the service queries the Teleport backend for `db` resources
that match their configured filters. For each matching `db`, the Database
Service creates a `db_server` resource configured to proxy the target
database.
To learn more about using the `db` resource, see [Dynamic Database
Registration](../../../enroll-resources/database-access/guides/dynamic-registration.mdx).
To learn more about the `db_server` resource, see the [reference
guide](database-server-v3.mdx).
- type: DatabaseServerV3
package: github.com/gravitational/teleport/api/types
yaml_kind: db_server
yaml_version: v3
introduction: |
The `db_server` resource represents a database that has been registered
with Teleport.
The Teleport Database Service creates a `db_server` in two situations:
1. It reads information about the target database in its
configuration file when it first starts.
1. It fetches a dynamically registered `db` resource from the Teleport
backend that matches its dynamic resource watchers.
There can be multiple instances of a `db_server` for a single database,
each corresponding to a different Teleport Database Service instance that
proxies the database. Read more about [High
Availability](../../../installation/agents/high-availability.mdx) for
the Teleport Database Service. Read the [reference guide](./database-v3.mdx) for
the `db` resource.
- type: DatabaseServiceV1
package: github.com/gravitational/teleport/api/types
yaml_version: v1
yaml_kind: db_service
introduction: |
The `db_service` resource represents an instance of the Teleport Database
Service. When the Database Service starts, it registers a `db_service`
resource. You can query this resource to see a list of Database Service
instances and the dynamic resource matchers they are configured to use in
order to proxy databases configured via the dynamic `db` resource.
To learn more about using the `db_service` and `db` resources, see
[Dynamic Database
Registration](../../../enroll-resources/database-access/guides/dynamic-registration.mdx).
Read the [reference guide](./database-v3.mdx) for the `db` resource.
- type: DiscoveryConfig
package: github.com/gravitational/teleport/api/types/discoveryconfig
yaml_kind: discovery_config
@@ -11,7 +11,23 @@ sidebar_label: Database Server V3
**Kind**: `db_server`<br/>
**Version**: `v3`
Represents a database access server.
The `db_server` resource represents a database that has been registered
with Teleport.
The Teleport Database Service creates a `db_server` in two situations:
1. It reads information about the target database in its
configuration file when it first starts.
1. It fetches a dynamically registered `db` resource from the Teleport
backend that matches its dynamic resource watchers.
There can be multiple instances of a `db_server` for a single database,
each corresponding to a different Teleport Database Service instance that
proxies the database. Read more about [High
Availability](../../../installation/agents/high-availability.mdx) for
the Teleport Database Service. Read the [reference guide](./database-v3.mdx) for
the `db` resource.
## Top-level fields
@@ -0,0 +1,130 @@
---
title: Database Service V1 Reference
description: Provides a reference of fields within the Database Service V1 resource, which you can manage with tctl.
sidebar_label: Database Service V1
---
{/* vale 3rd-party-products.former-names = NO */}
{/* vale messaging.capitalization = NO */}
{/* Automatically generated from: types/types.pb.go */}
{/* DO NOT EDIT */}
**Kind**: `db_service`<br/>
**Version**: `v1`
The `db_service` resource represents an instance of the Teleport Database
Service. When the Database Service starts, it registers a `db_service`
resource. You can query this resource to see a list of Database Service
instances and the dynamic resource matchers they are configured to use in
order to proxy databases configured via the dynamic `db` resource.
To learn more about using the `db_service` and `db` resources, see
[Dynamic Database
Registration](../../../enroll-resources/database-access/guides/dynamic-registration.mdx).
Read the [reference guide](./database-v3.mdx) for the `db` resource.
## Top-level fields
Example:
```yaml
kind: "string"
sub_kind: "string"
version: "string"
metadata: # [...]
spec: # [...]
```
|Field Name|Description|Type|
|---|---|---|
|kind|A resource kind|string|
|metadata|Resource metadata|[Metadata](#metadata)|
|spec|The resource spec.|[Database Service Spec V1](#database-service-spec-v1)|
|sub_kind|An optional resource sub kind, used in some resources|string|
|version|The API version used to create the resource. It must be specified. Based on this version, Teleport will apply different defaults on resource creation or deletion. It must be an integer prefixed by "v". For example: `v1`|string|
## Database Resource Matcher
A set of properties that is used to match on resources.
Example:
```yaml
labels: # [...]
aws: # [...]
```
|Field Name|Description|Type|
|---|---|---|
|aws||[Resource Matcher AWS](#resource-matcher-aws)|
|labels||[Labels](#labels)|
## Database Service Spec V1
The DatabaseService Spec.
Example:
```yaml
resources:
- # [...]
- # [...]
- # [...]
hostname: "string"
```
|Field Name|Description|Type|
|---|---|---|
|hostname|The hostname where this service is running.|string|
|resources|The configured match for Database resources.|[][Database Resource Matcher](#database-resource-matcher)|
## Labels
A wrapper around map that can marshal and unmarshal itself from scalar and list values
## Metadata
Resource metadata
Example:
```yaml
name: "string"
description: "string"
labels:
"string": "string"
"string": "string"
"string": "string"
expires: # See description
revision: "string"
```
|Field Name|Description|Type|
|---|---|---|
|description|Object description|string|
|expires|A global expiry time header can be set on any resource in the system.||
|labels|A set of labels|map[string]string|
|name|An object name|string|
|revision|An opaque identifier which tracks the versions of a resource over time. Clients should ignore and not alter its value but must return the revision in any updates of a resource.|string|
## Resource Matcher AWS
Contains AWS specific settings for resource matcher.
Example:
```yaml
assume_role_arn: "string"
external_id: "string"
```
|Field Name|Description|Type|
|---|---|---|
|assume_role_arn|An optional AWS role ARN to assume when accessing a database.|string|
|external_id|An optional AWS external ID used to enable assuming an AWS role across accounts.|string|
@@ -0,0 +1,620 @@
---
title: Database V3 Reference
description: Provides a reference of fields within the Database V3 resource, which you can manage with tctl.
sidebar_label: Database V3
---
{/* vale 3rd-party-products.former-names = NO */}
{/* vale messaging.capitalization = NO */}
{/* Automatically generated from: types/types.pb.go */}
{/* DO NOT EDIT */}
**Kind**: `db`<br/>
**Version**: `v3`
The `db` resource represents a database that is dynamically registered
with Teleport.
If you configure the Teleport Database Service with **dynamic resource
watchers**, the service queries the Teleport backend for `db` resources
that match their configured filters. For each matching `db`, the Database
Service creates a `db_server` resource configured to proxy the target
database.
To learn more about using the `db` resource, see [Dynamic Database
Registration](../../../enroll-resources/database-access/guides/dynamic-registration.mdx).
To learn more about the `db_server` resource, see the [reference
guide](database-server-v3.mdx).
## Top-level fields
Example:
```yaml
kind: "string"
sub_kind: "string"
version: "string"
metadata: # [...]
spec: # [...]
status: # [...]
```
|Field Name|Description|Type|
|---|---|---|
|kind|The database resource kind.|string|
|metadata|The database metadata.|[Metadata](#metadata)|
|spec|The database spec.|[Database Spec V3](#database-spec-v3)|
|status|The database runtime information.|[Database Status V3](#database-status-v3)|
|sub_kind|An optional resource subkind.|string|
|version|The resource version. It must be specified. Supported values are: `v3`.|string|
## AD
Contains Active Directory specific database configuration.
Example:
```yaml
keytab_file: "string"
krb5_file: "string"
domain: "string"
spn: "string"
ldap_cert: "string"
kdc_host_name: "string"
ldap_service_account_name: "string"
ldap_service_account_sid: "string"
```
|Field Name|Description|Type|
|---|---|---|
|domain|The Active Directory domain the database resides in.|string|
|kdc_host_name|The host name for a KDC for x509 Authentication.|string|
|keytab_file|The path to the Kerberos keytab file.|string|
|krb5_file|The path to the Kerberos configuration file. Defaults to /etc/krb5.conf.|string|
|ldap_cert|A certificate from Windows LDAP/AD, optional; only for x509 Authentication.|string|
|ldap_service_account_name|The name of service account for performing LDAP queries. Required for x509 Auth / PKINIT.|string|
|ldap_service_account_sid|The SID of service account for performing LDAP queries. Required for x509 Auth / PKINIT.|string|
|spn|The service principal name for the database.|string|
## AWS
Contains AWS metadata about the database.
Example:
```yaml
region: "string"
redshift: # [...]
rds: # [...]
account_id: "string"
elasticache: # [...]
secret_store: # [...]
memorydb: # [...]
rdsproxy: # [...]
redshift_serverless: # [...]
external_id: "string"
assume_role_arn: "string"
opensearch: # [...]
iam_policy_status: # [...]
session_tags:
"string": "string"
"string": "string"
"string": "string"
docdb: # [...]
elasticache_serverless: # [...]
```
|Field Name|Description|Type|
|---|---|---|
|account_id|The AWS account ID this database belongs to.|string|
|assume_role_arn|An optional AWS role ARN to assume when accessing a database. Set this field and ExternalID to enable access across AWS accounts.|string|
|docdb|Contains Amazon DocumentDB-specific metadata.|[DocumentDB](#documentdb)|
|elasticache|Contains Amazon ElastiCache Redis-specific metadata.|[ElastiCache](#elasticache)|
|elasticache_serverless|Contains Amazon ElastiCache Serverless metadata.|[ElastiCache Serverless](#elasticache-serverless)|
|external_id|An optional AWS external ID used to enable assuming an AWS role across accounts.|string|
|iam_policy_status|Indicates whether the IAM Policy is configured properly for database access. If not, the user must update the AWS profile identity to allow access to the Database. Eg for an RDS Database: the underlying AWS profile allows for `rds-db:connect` for the Database.|[IAM Policy Status](#iam-policy-status)|
|memorydb|Contains AWS MemoryDB specific metadata.|[MemoryDB](#memorydb)|
|opensearch|Contains AWS OpenSearch specific metadata.|[OpenSearch](#opensearch)|
|rds|Contains RDS specific metadata.|[RDS](#rds)|
|rdsproxy|Contains AWS Proxy specific metadata.|[RDS Proxy](#rds-proxy)|
|redshift|Contains Redshift specific metadata.|[Redshift](#redshift)|
|redshift_serverless|Contains metatada specific to Amazon Redshift Serverless.|[Redshift Serverless](#redshift-serverless)|
|region|A AWS cloud region.|string|
|secret_store|Contains secret store configurations.|[Secret Store](#secret-store)|
|session_tags|A list of AWS STS session tags.|map[string]string|
## AlloyDB
Contains AlloyDB specific configuration elements.
Example:
```yaml
endpoint_type: "string"
endpoint_override: "string"
```
|Field Name|Description|Type|
|---|---|---|
|endpoint_override|An override of endpoint address to use.|string|
|endpoint_type|The database endpoint type to use. Should be one of: "private", "public", "psc".|string|
## Azure
Contains Azure specific database metadata.
Example:
```yaml
name: "string"
resource_id: "string"
redis: # [...]
is_flexi_server: true
```
|Field Name|Description|Type|
|---|---|---|
|is_flexi_server|True if the database is an Azure Flexible server.|Boolean|
|name|The Azure database server name.|string|
|redis|Contains Azure Cache for Redis specific database metadata.|[Azure Redis](#azure-redis)|
|resource_id|The Azure fully qualified ID for the resource.|string|
## Azure Redis
Contains Azure Cache for Redis specific database metadata.
Example:
```yaml
clustering_policy: "string"
```
|Field Name|Description|Type|
|---|---|---|
|clustering_policy|The clustering policy for Redis Enterprise.|string|
## Command Label V2
A label that has a value as a result of the output generated by running a command, e.g. hostname
Example:
```yaml
period: # [...]
command:
- "string"
- "string"
- "string"
result: "string"
```
|Field Name|Description|Type|
|---|---|---|
|command|A command to run|[]string|
|period|A time between command runs|[Duration](#duration)|
|result|Captures standard output|string|
## Database Admin User
Contains information about privileged database user used for automatic user provisioning.
Example:
```yaml
name: "string"
default_database: "string"
```
|Field Name|Description|Type|
|---|---|---|
|default_database|The database that the privileged database user logs into by default. Depending on the database type, this database may be used to store procedures or data for managing database users.|string|
|name|The username of the privileged database user.|string|
## Database Spec V3
The database spec.
Example:
```yaml
protocol: "string"
uri: "string"
ca_cert: "string"
dynamic_labels:
"string": # [...]
"string": # [...]
"string": # [...]
aws: # [...]
gcp: # [...]
azure: # [...]
tls: # [...]
ad: # [...]
mysql: # [...]
admin_user: # [...]
mongo_atlas: # [...]
oracle: # [...]
```
|Field Name|Description|Type|
|---|---|---|
|ad|The Active Directory configuration for the database.|[AD](#ad)|
|admin_user|The database admin user for automatic user provisioning.|[Database Admin User](#database-admin-user)|
|aws|Contains AWS specific settings for RDS/Aurora/Redshift databases.|[AWS](#aws)|
|azure|Contains Azure specific database metadata.|[Azure](#azure)|
|ca_cert|The PEM-encoded database CA certificate. DEPRECATED: Moved to TLS.CACert. DELETE IN 10.0.|string|
|dynamic_labels|The database dynamic labels.|map[string][Command Label V2](#command-label-v2)|
|gcp|Contains parameters specific to GCP Cloud SQL databases.|[GCP Cloud SQL](#gcp-cloud-sql)|
|mongo_atlas|Contains Atlas metadata about the database.|[Mongo Atlas](#mongo-atlas)|
|mysql|An additional section with MySQL database options.|[MySQL Options](#mysql-options)|
|oracle|An additional Oracle configuration options.|[Oracle Options](#oracle-options)|
|protocol|The database protocol: postgres, mysql, mongodb, etc.|string|
|tls|The TLS configuration used when establishing connection to target database. Allows to provide custom CA cert or override server name.|[Database TLS](#database-tls)|
|uri|The database connection endpoint.|string|
## Database Status V3
Contains runtime information about the database.
Example:
```yaml
ca_cert: "string"
aws: # [...]
mysql: # [...]
managed_users:
- "string"
- "string"
- "string"
azure: # [...]
vnet_dns_name: "string"
```
|Field Name|Description|Type|
|---|---|---|
|aws|The auto-discovered AWS cloud database metadata.|[AWS](#aws)|
|azure|The auto-discovered Azure cloud database metadata.|[Azure](#azure)|
|ca_cert|The auto-downloaded cloud database CA certificate.|string|
|managed_users|A list of database users that are managed by Teleport.|[]string|
|mysql|An additional section with MySQL runtime database information.|[MySQL Options](#mysql-options)|
|vnet_dns_name|A DNS-safe, deterministic hash of the database name used by VNet for database FQDN resolution.|string|
## Database TLS
Contains TLS configuration options.
Example:
```yaml
mode: # [...]
ca_cert: "string"
server_name: "string"
trust_system_cert_pool: true
```
|Field Name|Description|Type|
|---|---|---|
|ca_cert|An optional user provided CA certificate used for verifying database TLS connection.|string|
|mode|A TLS connection mode. 0 is "verify-full"; 1 is "verify-ca", 2 is "insecure".|[Database TLS Mode](#database-tls-mode)|
|server_name|Allows to provide custom hostname. This value will override the servername/hostname on a certificate during validation.|string|
|trust_system_cert_pool|Allows Teleport to trust certificate authorities available on the host system. If not set (by default), Teleport only trusts self-signed databases with TLS certificates signed by Teleport's Database Server CA or the ca_cert specified in this TLS setting. For cloud-hosted databases, Teleport downloads the corresponding required CAs for validation.|Boolean|
## Database TLS Mode
Represents the level of TLS verification performed by DB agent when connecting to a database.
## DocumentDB
Contains Amazon DocumentDB-specific metadata.
Example:
```yaml
cluster_id: "string"
instance_id: "string"
endpoint_type: "string"
```
|Field Name|Description|Type|
|---|---|---|
|cluster_id|The cluster identifier.|string|
|endpoint_type|The type of the endpoint.|string|
|instance_id|The instance identifier.|string|
## Duration
A wrapper around duration to set up custom marshal/unmarshal
## ElastiCache
Contains Amazon ElastiCache Redis-specific metadata.
Example:
```yaml
replication_group_id: "string"
user_group_ids:
- "string"
- "string"
- "string"
transit_encryption_enabled: true
endpoint_type: "string"
```
|Field Name|Description|Type|
|---|---|---|
|endpoint_type|The type of the endpoint.|string|
|replication_group_id|The Redis replication group ID.|string|
|transit_encryption_enabled|Indicates whether in-transit encryption (TLS) is enabled.|Boolean|
|user_group_ids|A list of user group IDs.|[]string|
## ElastiCache Serverless
Contains Amazon ElastiCache Serverless metadata.
Example:
```yaml
cache_name: "string"
```
|Field Name|Description|Type|
|---|---|---|
|cache_name|An ElastiCache Serverless cache name.|string|
## GCP Cloud SQL
Contains parameters specific to GCP databases. The name "GCPCloudSQL" is a legacy from a time when only GCP Cloud SQL was supported.
Example:
```yaml
project_id: "string"
instance_id: "string"
alloydb: # [...]
```
|Field Name|Description|Type|
|---|---|---|
|alloydb|Contains AlloyDB specific configuration elements.|[AlloyDB](#alloydb)|
|instance_id|The Cloud SQL instance ID.|string|
|project_id|The GCP project ID the Cloud SQL instance resides in.|string|
## IAM Policy Status
Represents states that describe if an AWS database has its IAM policy properly configured or not. This enum is set in a Sync.Map during an IAM task that checks for the validity of IAM policy, and the database gets updated with the value from this map during a heartbeat.
## MemoryDB
Contains AWS MemoryDB specific metadata.
Example:
```yaml
cluster_name: "string"
acl_name: "string"
tls_enabled: true
endpoint_type: "string"
```
|Field Name|Description|Type|
|---|---|---|
|acl_name|The name of the ACL associated with the cluster.|string|
|cluster_name|The name of the MemoryDB cluster.|string|
|endpoint_type|The type of the endpoint.|string|
|tls_enabled|Indicates whether in-transit encryption (TLS) is enabled.|Boolean|
## Metadata
Resource metadata
Example:
```yaml
name: "string"
description: "string"
labels:
"string": "string"
"string": "string"
"string": "string"
expires: # See description
revision: "string"
```
|Field Name|Description|Type|
|---|---|---|
|description|Object description|string|
|expires|A global expiry time header can be set on any resource in the system.||
|labels|A set of labels|map[string]string|
|name|An object name|string|
|revision|An opaque identifier which tracks the versions of a resource over time. Clients should ignore and not alter its value but must return the revision in any updates of a resource.|string|
## Mongo Atlas
Contains Atlas metadata about the database.
Example:
```yaml
name: "string"
```
|Field Name|Description|Type|
|---|---|---|
|name|The Atlas database instance name.|string|
## MySQL Options
Additional MySQL database options.
Example:
```yaml
server_version: "string"
```
|Field Name|Description|Type|
|---|---|---|
|server_version|The server version reported by DB proxy if the runtime information is not available.|string|
## OpenSearch
Contains AWS OpenSearch specific metadata.
Example:
```yaml
domain_name: "string"
domain_id: "string"
endpoint_type: "string"
```
|Field Name|Description|Type|
|---|---|---|
|domain_id|The ID of the domain.|string|
|domain_name|The name of the domain.|string|
|endpoint_type|The type of the endpoint.|string|
## Oracle Options
Contains Oracle-specific configuration options.
Example:
```yaml
audit_user: "string"
retry_count: 1
shuffle_hostnames: true
```
|Field Name|Description|Type|
|---|---|---|
|audit_user|The name of the Oracle database user that should be used to access the internal audit trail.|string|
|retry_count|The maximum number of times to retry connecting to a host upon failure. If not specified it defaults to 2, for a total of 3 connection attempts.|number|
|shuffle_hostnames|, when true, randomizes the order of hosts to connect to from the provided list.|Boolean|
## RDS
Contains AWS RDS specific database metadata.
Example:
```yaml
instance_id: "string"
cluster_id: "string"
resource_id: "string"
iam_auth: true
subnets:
- "string"
- "string"
- "string"
vpc_id: "string"
security_groups:
- "string"
- "string"
- "string"
```
|Field Name|Description|Type|
|---|---|---|
|cluster_id|The RDS cluster (Aurora) identifier.|string|
|iam_auth|Indicates whether database IAM authentication is enabled.|Boolean|
|instance_id|The RDS instance identifier.|string|
|resource_id|The RDS instance resource identifier (db-xxx).|string|
|security_groups|A list of attached security groups for the RDS instance.|[]string|
|subnets|A list of subnets for the RDS instance.|[]string|
|vpc_id|The VPC where the RDS is running.|string|
## RDS Proxy
Contains AWS RDS Proxy specific database metadata.
Example:
```yaml
name: "string"
custom_endpoint_name: "string"
resource_id: "string"
```
|Field Name|Description|Type|
|---|---|---|
|custom_endpoint_name|The identifier of an RDS Proxy custom endpoint.|string|
|name|The identifier of an RDS Proxy.|string|
|resource_id|The RDS instance resource identifier (prx-xxx).|string|
## Redshift
Contains metadata specific to Amazon Redshift.
Example:
```yaml
cluster_id: "string"
```
|Field Name|Description|Type|
|---|---|---|
|cluster_id|The Redshift cluster identifier.|string|
## Redshift Serverless
Contains Amazon Redshift Serverless-specific metadata.
Example:
```yaml
workgroup_name: "string"
endpoint_name: "string"
workgroup_id: "string"
```
|Field Name|Description|Type|
|---|---|---|
|endpoint_name|The VPC endpoint name.|string|
|workgroup_id|The workgroup ID.|string|
|workgroup_name|The workgroup name.|string|
## Secret Store
Contains secret store configurations.
Example:
```yaml
key_prefix: "string"
kms_key_id: "string"
```
|Field Name|Description|Type|
|---|---|---|
|key_prefix|Specifies the secret key prefix.|string|
|kms_key_id|Specifies the AWS KMS key for encryption.|string|