-
Notifications
You must be signed in to change notification settings - Fork 210
feat: Adds port_mapping_enabled attribute to privatelink_endpoint and privatelink_endpoint_service
#4017
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: CLOUDP-346617-dev-gcp-port-based
Are you sure you want to change the base?
feat: Adds port_mapping_enabled attribute to privatelink_endpoint and privatelink_endpoint_service
#4017
Changes from 24 commits
332be39
9175dce
8a9562f
ca4cacf
ed3e818
d6725b9
7545b99
3752b5a
cfb1e0f
3a32c9f
df750a7
be386c1
0c9b674
6d555dc
a719ede
07cfdb7
6484466
f06647e
5e36067
0397c6b
80e3fcb
5f5ef57
3ab8f39
48449c5
4c79e7a
e12b299
993a4bb
0d3dca5
4857fe5
7b2d7a7
652d1d4
75313b9
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| ```release-note:enhancement | ||
| resource/mongodbatlas_privatelink_endpoint_service: Adds `port_mapping_enabled` attribute | ||
| ``` | ||
|
|
||
| ```release-note:enhancement | ||
| resource/mongodbatlas_privatelink_endpoint: Adds `port_mapping_enabled` attribute | ||
| ``` | ||
|
|
||
| ```release-note:enhancement | ||
| data-source/mongodbatlas_privatelink_endpoint_service: Adds `port_mapping_enabled` attribute | ||
| ``` | ||
|
|
||
| ```release-note:enhancement | ||
| data-source/mongodbatlas_privatelink_endpoint: Adds `port_mapping_enabled` attribute | ||
| ``` | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -33,9 +33,10 @@ resource "mongodbatlas_privatelink_endpoint_service" "test" { | |
| } | ||
|
|
||
| data "mongodbatlas_privatelink_endpoint_service" "test" { | ||
| project_id = mongodbatlas_privatelink_endpoint_service.test.project_id | ||
| private_link_id = mongodbatlas_privatelink_endpoint_service.test.private_link_id | ||
| interface_endpoint_id = mongodbatlas_privatelink_endpoint_service.test.interface_endpoint_id | ||
| project_id = mongodbatlas_privatelink_endpoint_service.test.project_id | ||
| private_link_id = mongodbatlas_privatelink_endpoint_service.test.private_link_id | ||
| endpoint_service_id = mongodbatlas_privatelink_endpoint_service.test.endpoint_service_id | ||
| provider_name = "AWS" | ||
| } | ||
| ``` | ||
|
|
||
|
|
@@ -71,9 +72,36 @@ resource "mongodbatlas_privatelink_endpoint_service" "test" { | |
| } | ||
|
|
||
| data "mongodbatlas_privatelink_endpoint_service" "test" { | ||
| project_id = mongodbatlas_privatelink_endpoint_service.test.project_id | ||
| private_link_id = mongodbatlas_privatelink_endpoint_service.test.private_link_id | ||
| interface_endpoint_id = mongodbatlas_privatelink_endpoint_service.test.interface_endpoint_id | ||
| project_id = mongodbatlas_privatelink_endpoint_service.test.project_id | ||
| private_link_id = mongodbatlas_privatelink_endpoint_service.test.private_link_id | ||
| endpoint_service_id = mongodbatlas_privatelink_endpoint_service.test.endpoint_service_id | ||
| provider_name = "AZURE" | ||
| } | ||
| ``` | ||
|
|
||
| ## Example with GCP (Legacy Architecture) | ||
|
|
||
| ```terraform | ||
| data "mongodbatlas_privatelink_endpoint_service" "test" { | ||
| project_id = mongodbatlas_privatelink_endpoint_service.test.project_id | ||
| private_link_id = mongodbatlas_privatelink_endpoint_service.test.private_link_id | ||
| endpoint_service_id = mongodbatlas_privatelink_endpoint_service.test.endpoint_service_id | ||
| provider_name = "GCP" | ||
| } | ||
| ``` | ||
|
|
||
| ## Example with GCP (Port-Based Architecture) | ||
|
|
||
| The new GCP port-based architecture uses port mapping to reduce resource provisioning. Unlike the legacy architecture that requires dedicated resources for each Atlas node, the new design uses a single set of resources to support up to 1000 nodes through a port mapping network endpoint group (NEG), enabling direct targeting of specific nodes using only one customer IP address. Enable it by setting `port_mapping_enabled = true` on the endpoint resource. | ||
|
|
||
| **Important:** For the new port-based architecture, use `endpoint_service_id` (the forwarding rule name) and `private_endpoint_ip_address` (the IP address). The `endpoints` list is no longer used for the new architecture. | ||
|
|
||
| ```terraform | ||
| data "mongodbatlas_privatelink_endpoint_service" "test" { | ||
| project_id = mongodbatlas_privatelink_endpoint_service.test.project_id | ||
| private_link_id = mongodbatlas_privatelink_endpoint_service.test.private_link_id | ||
| endpoint_service_id = mongodbatlas_privatelink_endpoint_service.test.endpoint_service_id | ||
| provider_name = "GCP" | ||
| } | ||
| ``` | ||
|
|
||
|
|
@@ -84,8 +112,8 @@ data "mongodbatlas_privatelink_endpoint_service" "test" { | |
|
|
||
| * `project_id` - (Required) Unique identifier for the project. | ||
| * `private_link_id` - (Required) Unique identifier of the private endpoint service for which you want to retrieve a private endpoint. | ||
| * `endpoint_service_id` - (Required) Unique identifier of the `AWS` or `AZURE` or `GCP` resource. | ||
| * `provider_name` - (Required) Cloud provider for which you want to create a private endpoint. Atlas accepts `AWS` or `AZURE` or `GCP`. | ||
| * `endpoint_service_id` - (Required) Unique identifier of the interface endpoint you created in your VPC with the `AWS`, `AZURE`, or `GCP` resource. For GCP legacy architecture, this can be any identifier string. For GCP port-based architecture (when `port_mapping_enabled = true` on the endpoint resource), this should be the forwarding rule name. | ||
|
||
| * `provider_name` - (Required) Cloud provider for which you want to retrieve a private endpoint. Atlas accepts `AWS`, `AZURE` or `GCP`. | ||
|
|
||
| ## Attributes Reference | ||
|
|
||
|
|
@@ -118,9 +146,11 @@ In addition to all arguments above, the following attributes are exported: | |
| * `AVAILABLE` - Atlas approved the connection to your private endpoint. | ||
| * `FAILED` - Atlas failed to accept the connection your private endpoint. | ||
| * `DELETING` - Atlas is removing the connection to your private endpoint from the Private Link service. | ||
| * `endpoints` - Collection of individual private endpoints that comprise your network endpoint group. | ||
| * `gcp_endpoint_status` - Status of the individual GCP endpoint. Only populated for port-based architecture (when `port_mapping_enabled = true`on the endpoint resource). Returns one of the following values: `INITIATING`, `AVAILABLE`, `FAILED`, `DELETING`. | ||
| * `endpoints` - Collection of individual private endpoints that comprise your network endpoint group. Only populated for legacy GCP architecture. | ||
| * `endpoint_name` - Forwarding rule that corresponds to the endpoint you created in GCP. | ||
| * `ip_address` - Private IP address of the network endpoint group you created in GCP. | ||
| * `status` - Status of the endpoint. Atlas returns one of the [values shown above](https://docs.atlas.mongodb.com/reference/api/private-endpoints-endpoint-create-one/#std-label-ref-status-field). | ||
| * `port_mapping_enabled` - Flag that indicates whether this endpoint service uses GCP port-mapping. This is a read-only attribute that reflects the architecture type. When `true`, the endpoint service uses the new GCP port-based architecture (requires 1 endpoint). When `false`, it uses the legacy architecture. Only applicable for GCP provider. | ||
|
|
||
| See [MongoDB Atlas API](https://docs.atlas.mongodb.com/reference/api/private-endpoints-endpoint-get-one/) Documentation for more information. | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the only other resource and ds in Private Endpoint Services group is https://registry.terraform.io/providers/mongodb/mongodbatlas/latest/docs/resources/private_endpoint_regional_mode, can you confirm nothing changes there?