Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.controlplane.com/llms.txt

Use this file to discover all available pages before exploring further.

Overview

An IP Set reserves a static public IP address per GVC location, preventing the address from changing when a workload is redeployed or infrastructure is updated.
To prevent ongoing charges, IP addresses must be explicitly released once they are no longer needed.

Binding

An IP Set can be linked to a workload or a GVC through its spec.link property. Linking requires configuration on both the IP Set and the target resource — each must reference the other for the binding to take effect.
The IP Set will only function if cross-linking is fully configured. The IP Set must reference the workload or GVC via spec.link, and the workload or GVC must reference the IP Set via its load balancer configuration.

Workload

To link an IP Set to a workload, the workload must have the direct load balancer enabled.
1. Configure the IP Set — set spec.link to point to the target workload:
kind: ipset
name: example
spec:
  link: /org/example-org/gvc/example-gvc/workload/example-workload
  locations:
    - name: //location/aws-us-west-2
      retentionPolicy: keep
2. Configure the Workload — set loadBalancer.direct.ipSet to reference the IP Set:
kind: workload
name: example-workload
spec:
  loadBalancer:
    direct:
      enabled: true
      ipSet: /org/example-org/ipset/example
      ports:
        - externalPort: 443
          protocol: TCP
          containerPort: 8080

GVC

To link an IP Set to a GVC, the GVC must have the dedicated load balancer enabled.
1. Configure the IP Set — set spec.link to point to the target GVC:
kind: ipset
name: example
spec:
  link: //gvc/example-gvc
  locations:
    - name: //location/aws-us-west-2
      retentionPolicy: keep
2. Configure the GVC — set loadBalancer.ipSet to reference the IP Set:
kind: gvc
name: example-gvc
spec:
  loadBalancer:
    dedicated: true
    ipSet: //ipset/example

Releasing

To release an IP address from a location, set the retentionPolicy for that location to "free".
An IP address will not be released unless it is no longer in use (no workload linked, GVC location not active, etc.)
kind: ipset
name: example
spec:
  link: /org/example-org/gvc/example-gvc/workload/example-workload
  locations:
    - name: //location/aws-us-west-2
      retentionPolicy: free

Status

Once the IP Set is initialized, its status is updated with the reserved IP address(es) for each location. The following is an example API response:
{
  "kind": "ipset",
  "name": "example",
  "spec": {
    "link": "/org/example-org/gvc/example-gvc/workload/example-workload",
    "locations": [
      {
        "name": "//location/aws-us-west-2",
        "retentionPolicy": "keep"
      }
    ]
  },
  "status": {
    "ipAddresses": [
      {
        "name": "aws-us-west-2",
        "ip": "10.20.30.40",
        "id": "eipalloc-0a1b2c3d4e5f67890",
        "state": "bound",
        "created": "2024-07-30T14:18:36.327Z"
      }
    ]
  }
}