cluster

package
v1.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 1, 2025 License: Apache-2.0 Imports: 30 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrConsistency = goerrors.New("consistency error")
)
View Source
var (
	ErrResourceLookup = goerrors.New("could not find the requested resource")
)

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client wraps up cluster related management handling.

func NewClient

func NewClient(client client.Client, namespace string, options *Options, identity *identity.Client, region *region.Client) *Client

NewClient returns a new client with required parameters.

func (*Client) Create

func (c *Client) Create(ctx context.Context, organizationID, projectID string, request *openapi.ComputeClusterWrite) (*openapi.ComputeClusterRead, error)

Create creates the implicit cluster indentified by the JTW claims.

func (*Client) Delete

func (c *Client) Delete(ctx context.Context, organizationID, projectID, clusterID string) error

Delete deletes the implicit cluster indentified by the JTW claims.

func (*Client) Evict added in v1.6.0

func (c *Client) Evict(ctx context.Context, organizationID, projectID, clusterID string, request *openapi.EvictionWrite) error

Evict is pretty complicated, we need to delete the requested servers from the region service, and update the cluster's pools to remove those instances so they don't just get recreated instantly, and also update the quota allocations. Now, if you naively deleted the servers, that would trigger a reconcile and a potential replacement before we've had a chance to update the cluster. If you updated the cluster then you've got yourself a problem where we have no control over what's deleted. So what we do is... Pause cluster reconciliation, kill the requested servers, update the allocations, update the cluster and unpause it. Ideally everything would be a nice atomic transaction, but you cannot do that with Kubernetes...

func (*Client) Get added in v1.6.0

func (c *Client) Get(ctx context.Context, organizationID, projectID, clusterID string) (*openapi.ComputeClusterRead, error)

func (*Client) List

List returns all clusters owned by the implicit control plane.

func (*Client) Update

func (c *Client) Update(ctx context.Context, organizationID, projectID, clusterID string, request *openapi.ComputeClusterWrite) error

Update implements read/modify/write for the cluster.

type Options

type Options struct {
	NodeNetwork    net.IPNet
	DNSNameservers []net.IP
}

func (*Options) AddFlags

func (o *Options) AddFlags(f *pflag.FlagSet)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL