UNPKG

@pulumi/gcp

Version:

A Pulumi package for creating and managing Google Cloud Platform resources.

527 lines (526 loc) • 19.2 kB
import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Cluster contains information about a Google Distributed Cloud Edge Kubernetes cluster. * * To get more information about Cluster, see: * * * [API documentation](https://cloud.google.com/distributed-cloud/edge/latest/docs/reference/container/rest/v1/projects.locations.clusters) * * How-to Guides * * [Create and manage clusters](https://cloud.google.com/distributed-cloud/edge/latest/docs/clusters) * * ## Example Usage * * ### Edgecontainer Cluster * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const project = gcp.organizations.getProject({}); * const _default = new gcp.edgecontainer.Cluster("default", { * name: "basic-cluster", * location: "us-central1", * authorization: { * adminUsers: { * username: "admin@hashicorptest.com", * }, * }, * networking: { * clusterIpv4CidrBlocks: ["10.0.0.0/16"], * servicesIpv4CidrBlocks: ["10.1.0.0/16"], * }, * fleet: { * project: project.then(project => `projects/${project.number}`), * }, * labels: { * my_key: "my_val", * other_key: "other_val", * }, * }); * ``` * ### Edgecontainer Cluster With Maintenance Window * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const project = gcp.organizations.getProject({}); * const _default = new gcp.edgecontainer.Cluster("default", { * name: "cluster-with-maintenance", * location: "us-central1", * authorization: { * adminUsers: { * username: "admin@hashicorptest.com", * }, * }, * networking: { * clusterIpv4CidrBlocks: ["10.0.0.0/16"], * servicesIpv4CidrBlocks: ["10.1.0.0/16"], * }, * fleet: { * project: project.then(project => `projects/${project.number}`), * }, * maintenancePolicy: { * window: { * recurringWindow: { * window: { * startTime: "2023-01-01T08:00:00Z", * endTime: "2023-01-01T17:00:00Z", * }, * recurrence: "FREQ=WEEKLY;BYDAY=SA", * }, * }, * }, * }); * ``` * ### Edgecontainer Local Control Plane Cluster * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const project = gcp.organizations.getProject({}); * const _default = new gcp.edgecontainer.Cluster("default", { * name: "local-control-plane-cluster", * location: "us-central1", * authorization: { * adminUsers: { * username: "admin@hashicorptest.com", * }, * }, * networking: { * clusterIpv4CidrBlocks: ["10.0.0.0/16"], * servicesIpv4CidrBlocks: ["10.1.0.0/16"], * }, * fleet: { * project: project.then(project => `projects/${project.number}`), * }, * externalLoadBalancerIpv4AddressPools: ["10.100.0.0-10.100.0.10"], * controlPlane: { * local: { * nodeLocation: "us-central1-edge-example-edgesite", * nodeCount: 1, * machineFilter: "machine-name", * sharedDeploymentPolicy: "ALLOWED", * }, * }, * }); * ``` * * ## Import * * Cluster can be imported using any of these accepted formats: * * * `projects/{{project}}/locations/{{location}}/clusters/{{name}}` * * * `{{project}}/{{location}}/{{name}}` * * * `{{location}}/{{name}}` * * When using the `pulumi import` command, Cluster can be imported using one of the formats above. For example: * * ```sh * $ pulumi import gcp:edgecontainer/cluster:Cluster default projects/{{project}}/locations/{{location}}/clusters/{{name}} * ``` * * ```sh * $ pulumi import gcp:edgecontainer/cluster:Cluster default {{project}}/{{location}}/{{name}} * ``` * * ```sh * $ pulumi import gcp:edgecontainer/cluster:Cluster default {{location}}/{{name}} * ``` */ export declare class Cluster extends pulumi.CustomResource { /** * Get an existing Cluster resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input<pulumi.ID>, state?: ClusterState, opts?: pulumi.CustomResourceOptions): Cluster; /** * Returns true if the given object is an instance of Cluster. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is Cluster; /** * RBAC policy that will be applied and managed by GEC. * Structure is documented below. */ readonly authorization: pulumi.Output<outputs.edgecontainer.ClusterAuthorization>; /** * The PEM-encoded public certificate of the cluster's CA. * **Note**: This property is sensitive and will not be displayed in the plan. */ readonly clusterCaCertificate: pulumi.Output<string>; /** * The configuration of the cluster control plane. * Structure is documented below. */ readonly controlPlane: pulumi.Output<outputs.edgecontainer.ClusterControlPlane | undefined>; /** * Remote control plane disk encryption options. This field is only used when * enabling CMEK support. * Structure is documented below. */ readonly controlPlaneEncryption: pulumi.Output<outputs.edgecontainer.ClusterControlPlaneEncryption>; /** * The control plane release version. */ readonly controlPlaneVersion: pulumi.Output<string>; /** * (Output) * The time when the maintenance event request was created. */ readonly createTime: pulumi.Output<string>; /** * The default maximum number of pods per node used if a maximum value is not * specified explicitly for a node pool in this cluster. If unspecified, the * Kubernetes default value will be used. */ readonly defaultMaxPodsPerNode: pulumi.Output<number>; /** * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. */ readonly effectiveLabels: pulumi.Output<{ [key: string]: string; }>; /** * The IP address of the Kubernetes API server. */ readonly endpoint: pulumi.Output<string>; /** * Address pools for cluster data plane external load balancing. */ readonly externalLoadBalancerIpv4AddressPools: pulumi.Output<string[]>; /** * Fleet related configuration. * Fleets are a Google Cloud concept for logically organizing clusters, * letting you use and manage multi-cluster capabilities and apply * consistent policies across your systems. * Structure is documented below. */ readonly fleet: pulumi.Output<outputs.edgecontainer.ClusterFleet>; /** * User-defined labels for the edgecloud cluster. * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. * Please refer to the field `effectiveLabels` for all of the labels present on the resource. */ readonly labels: pulumi.Output<{ [key: string]: string; } | undefined>; /** * The location of the resource. */ readonly location: pulumi.Output<string>; /** * All the maintenance events scheduled for the cluster, including the ones * ongoing, planned for the future and done in the past (up to 90 days). * Structure is documented below. */ readonly maintenanceEvents: pulumi.Output<outputs.edgecontainer.ClusterMaintenanceEvent[]>; /** * Cluster-wide maintenance policy configuration. * Structure is documented below. */ readonly maintenancePolicy: pulumi.Output<outputs.edgecontainer.ClusterMaintenancePolicy>; /** * The GDCE cluster name. */ readonly name: pulumi.Output<string>; /** * Fleet related configuration. * Fleets are a Google Cloud concept for logically organizing clusters, * letting you use and manage multi-cluster capabilities and apply * consistent policies across your systems. * Structure is documented below. */ readonly networking: pulumi.Output<outputs.edgecontainer.ClusterNetworking>; /** * The lowest release version among all worker nodes. This field can be empty * if the cluster does not have any worker nodes. */ readonly nodeVersion: pulumi.Output<string>; /** * The port number of the Kubernetes API server. */ readonly port: pulumi.Output<number>; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ readonly project: pulumi.Output<string>; /** * The combination of labels configured directly on the resource * and default labels configured on the provider. */ readonly pulumiLabels: pulumi.Output<{ [key: string]: string; }>; /** * The release channel a cluster is subscribed to. * Possible values are: `RELEASE_CHANNEL_UNSPECIFIED`, `NONE`, `REGULAR`. */ readonly releaseChannel: pulumi.Output<string>; /** * Indicates the status of the cluster. */ readonly status: pulumi.Output<string>; /** * Config that customers are allowed to define for GDCE system add-ons. * Structure is documented below. */ readonly systemAddonsConfig: pulumi.Output<outputs.edgecontainer.ClusterSystemAddonsConfig>; /** * The target cluster version. For example: "1.5.0". */ readonly targetVersion: pulumi.Output<string>; /** * (Output) * The time when the maintenance event message was updated. */ readonly updateTime: pulumi.Output<string>; /** * Create a Cluster resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args: ClusterArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering Cluster resources. */ export interface ClusterState { /** * RBAC policy that will be applied and managed by GEC. * Structure is documented below. */ authorization?: pulumi.Input<inputs.edgecontainer.ClusterAuthorization>; /** * The PEM-encoded public certificate of the cluster's CA. * **Note**: This property is sensitive and will not be displayed in the plan. */ clusterCaCertificate?: pulumi.Input<string>; /** * The configuration of the cluster control plane. * Structure is documented below. */ controlPlane?: pulumi.Input<inputs.edgecontainer.ClusterControlPlane>; /** * Remote control plane disk encryption options. This field is only used when * enabling CMEK support. * Structure is documented below. */ controlPlaneEncryption?: pulumi.Input<inputs.edgecontainer.ClusterControlPlaneEncryption>; /** * The control plane release version. */ controlPlaneVersion?: pulumi.Input<string>; /** * (Output) * The time when the maintenance event request was created. */ createTime?: pulumi.Input<string>; /** * The default maximum number of pods per node used if a maximum value is not * specified explicitly for a node pool in this cluster. If unspecified, the * Kubernetes default value will be used. */ defaultMaxPodsPerNode?: pulumi.Input<number>; /** * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. */ effectiveLabels?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * The IP address of the Kubernetes API server. */ endpoint?: pulumi.Input<string>; /** * Address pools for cluster data plane external load balancing. */ externalLoadBalancerIpv4AddressPools?: pulumi.Input<pulumi.Input<string>[]>; /** * Fleet related configuration. * Fleets are a Google Cloud concept for logically organizing clusters, * letting you use and manage multi-cluster capabilities and apply * consistent policies across your systems. * Structure is documented below. */ fleet?: pulumi.Input<inputs.edgecontainer.ClusterFleet>; /** * User-defined labels for the edgecloud cluster. * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. * Please refer to the field `effectiveLabels` for all of the labels present on the resource. */ labels?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * The location of the resource. */ location?: pulumi.Input<string>; /** * All the maintenance events scheduled for the cluster, including the ones * ongoing, planned for the future and done in the past (up to 90 days). * Structure is documented below. */ maintenanceEvents?: pulumi.Input<pulumi.Input<inputs.edgecontainer.ClusterMaintenanceEvent>[]>; /** * Cluster-wide maintenance policy configuration. * Structure is documented below. */ maintenancePolicy?: pulumi.Input<inputs.edgecontainer.ClusterMaintenancePolicy>; /** * The GDCE cluster name. */ name?: pulumi.Input<string>; /** * Fleet related configuration. * Fleets are a Google Cloud concept for logically organizing clusters, * letting you use and manage multi-cluster capabilities and apply * consistent policies across your systems. * Structure is documented below. */ networking?: pulumi.Input<inputs.edgecontainer.ClusterNetworking>; /** * The lowest release version among all worker nodes. This field can be empty * if the cluster does not have any worker nodes. */ nodeVersion?: pulumi.Input<string>; /** * The port number of the Kubernetes API server. */ port?: pulumi.Input<number>; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ project?: pulumi.Input<string>; /** * The combination of labels configured directly on the resource * and default labels configured on the provider. */ pulumiLabels?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * The release channel a cluster is subscribed to. * Possible values are: `RELEASE_CHANNEL_UNSPECIFIED`, `NONE`, `REGULAR`. */ releaseChannel?: pulumi.Input<string>; /** * Indicates the status of the cluster. */ status?: pulumi.Input<string>; /** * Config that customers are allowed to define for GDCE system add-ons. * Structure is documented below. */ systemAddonsConfig?: pulumi.Input<inputs.edgecontainer.ClusterSystemAddonsConfig>; /** * The target cluster version. For example: "1.5.0". */ targetVersion?: pulumi.Input<string>; /** * (Output) * The time when the maintenance event message was updated. */ updateTime?: pulumi.Input<string>; } /** * The set of arguments for constructing a Cluster resource. */ export interface ClusterArgs { /** * RBAC policy that will be applied and managed by GEC. * Structure is documented below. */ authorization: pulumi.Input<inputs.edgecontainer.ClusterAuthorization>; /** * The configuration of the cluster control plane. * Structure is documented below. */ controlPlane?: pulumi.Input<inputs.edgecontainer.ClusterControlPlane>; /** * Remote control plane disk encryption options. This field is only used when * enabling CMEK support. * Structure is documented below. */ controlPlaneEncryption?: pulumi.Input<inputs.edgecontainer.ClusterControlPlaneEncryption>; /** * The default maximum number of pods per node used if a maximum value is not * specified explicitly for a node pool in this cluster. If unspecified, the * Kubernetes default value will be used. */ defaultMaxPodsPerNode?: pulumi.Input<number>; /** * Address pools for cluster data plane external load balancing. */ externalLoadBalancerIpv4AddressPools?: pulumi.Input<pulumi.Input<string>[]>; /** * Fleet related configuration. * Fleets are a Google Cloud concept for logically organizing clusters, * letting you use and manage multi-cluster capabilities and apply * consistent policies across your systems. * Structure is documented below. */ fleet: pulumi.Input<inputs.edgecontainer.ClusterFleet>; /** * User-defined labels for the edgecloud cluster. * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. * Please refer to the field `effectiveLabels` for all of the labels present on the resource. */ labels?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * The location of the resource. */ location: pulumi.Input<string>; /** * Cluster-wide maintenance policy configuration. * Structure is documented below. */ maintenancePolicy?: pulumi.Input<inputs.edgecontainer.ClusterMaintenancePolicy>; /** * The GDCE cluster name. */ name?: pulumi.Input<string>; /** * Fleet related configuration. * Fleets are a Google Cloud concept for logically organizing clusters, * letting you use and manage multi-cluster capabilities and apply * consistent policies across your systems. * Structure is documented below. */ networking: pulumi.Input<inputs.edgecontainer.ClusterNetworking>; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ project?: pulumi.Input<string>; /** * The release channel a cluster is subscribed to. * Possible values are: `RELEASE_CHANNEL_UNSPECIFIED`, `NONE`, `REGULAR`. */ releaseChannel?: pulumi.Input<string>; /** * Config that customers are allowed to define for GDCE system add-ons. * Structure is documented below. */ systemAddonsConfig?: pulumi.Input<inputs.edgecontainer.ClusterSystemAddonsConfig>; /** * The target cluster version. For example: "1.5.0". */ targetVersion?: pulumi.Input<string>; }