@pulumi/gcp
Version:
A Pulumi package for creating and managing Google Cloud Platform resources.
570 lines • 23.7 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
* RolloutSequence defines the desired order of upgrades.
*
* To get more information about RolloutSequence, see:
*
* * [API documentation](https://docs.cloud.google.com/kubernetes-engine/fleet-management/docs/reference/rest/v1beta/projects.locations.rolloutSequences)
* * How-to Guides
* * [Rollout Sequencing Overview](https://cloud.google.com/kubernetes-engine/docs/concepts/rollout-sequencing-custom-stages/about-rollout-sequencing)
*
* ## Example Usage
*
* ### Gke Hub Rollout Sequence Create
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
* import * as time from "@pulumiverse/time";
*
* const project = new gcp.organizations.Project("project", {
* projectId: "rs-project",
* name: "rs-project",
* orgId: "123456789",
* billingAccount: "000000-0000000-0000000-000000",
* deletionPolicy: "DELETE",
* });
* const gkehub = new gcp.projects.Service("gkehub", {
* project: project.projectId,
* service: "gkehub.googleapis.com",
* });
* // wait for API enablement
* const wait120Seconds = new time.Sleep("wait_120_seconds", {createDuration: "120s"}, {
* dependsOn: [gkehub],
* });
* const _default = new gcp.gkehub.Fleet("default", {
* displayName: "rs-fleet",
* project: project.projectId,
* }, {
* dependsOn: [wait120Seconds],
* });
* const rolloutSequence = new gcp.gkehub.RolloutSequence("rollout_sequence", {
* project: project.projectId,
* rolloutSequenceId: "rs-basic",
* displayName: "Basic Rollout Sequence",
* ignoredClustersSelector: {
* labelSelector: "resource.labels.ignored == 'true'",
* },
* stages: [{
* fleetProjects: [pulumi.interpolate`projects/${project.projectId}`],
* soakDuration: "1h",
* }],
* autoUpgradeConfig: {
* rolloutCreationScope: {
* upgradeTypes: [
* "CONTROL_PLANE_MINOR",
* "CONTROL_PLANE_PATCH",
* "NODE_MINOR",
* "NODE_PATCH",
* ],
* },
* },
* }, {
* dependsOn: [_default],
* });
* ```
* ### Gke Hub Rollout Sequence Update
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
* import * as time from "@pulumiverse/time";
*
* const project = new gcp.organizations.Project("project", {
* projectId: "rs-project",
* name: "rs-project",
* orgId: "123456789",
* billingAccount: "000000-0000000-0000000-000000",
* deletionPolicy: "DELETE",
* });
* const gkehub = new gcp.projects.Service("gkehub", {
* project: project.projectId,
* service: "gkehub.googleapis.com",
* });
* // wait for API enablement
* const wait120Seconds = new time.Sleep("wait_120_seconds", {createDuration: "120s"}, {
* dependsOn: [gkehub],
* });
* const _default = new gcp.gkehub.Fleet("default", {
* displayName: "rs-fleet",
* project: project.projectId,
* }, {
* dependsOn: [wait120Seconds],
* });
* const rolloutSequence = new gcp.gkehub.RolloutSequence("rollout_sequence", {
* project: project.projectId,
* rolloutSequenceId: "rs-basic",
* displayName: "Modified Rollout Sequence",
* ignoredClustersSelector: {
* labelSelector: "resource.labels.ignored == 'super_true'",
* },
* stages: [
* {
* fleetProjects: [pulumi.interpolate`projects/${project.projectId}`],
* clusterSelector: {
* labelSelector: "resource.labels.canary=='true'",
* },
* soakDuration: "2h",
* },
* {
* fleetProjects: [pulumi.interpolate`projects/${project.projectId}`],
* soakDuration: "1d",
* },
* ],
* autoUpgradeConfig: {
* rolloutCreationScope: {
* upgradeTypes: [
* "CONTROL_PLANE_PATCH",
* "NODE_PATCH",
* ],
* },
* },
* labels: {
* some_key: "some_value",
* },
* }, {
* dependsOn: [_default],
* });
* ```
* ### Gke Hub Rollout Sequence User Triggered Create
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
* import * as time from "@pulumiverse/time";
*
* const project = new gcp.organizations.Project("project", {
* projectId: "rs-project",
* name: "rs-project",
* orgId: "123456789",
* billingAccount: "000000-0000000-0000000-000000",
* deletionPolicy: "DELETE",
* });
* // Enable APIs in a deterministic order to avoid inconsistent VCR recordings
* const gkehub = new gcp.projects.Service("gkehub", {
* project: project.projectId,
* service: "gkehub.googleapis.com",
* });
* const container = new gcp.projects.Service("container", {
* project: project.projectId,
* service: "container.googleapis.com",
* }, {
* dependsOn: [gkehub],
* });
* const compute = new gcp.projects.Service("compute", {
* project: project.projectId,
* service: "compute.googleapis.com",
* }, {
* dependsOn: [container],
* });
* // wait for API enablement
* const wait120Seconds = new time.Sleep("wait_120_seconds", {createDuration: "120s"}, {
* dependsOn: [compute],
* });
* const _default = new gcp.gkehub.Fleet("default", {
* displayName: "rs-fleet",
* project: project.projectId,
* }, {
* dependsOn: [wait120Seconds],
* });
* const versions = gcp.container.getEngineVersionsOutput({
* location: "us-central1-a",
* project: project.projectId,
* });
* const primary = new gcp.container.Cluster("primary", {
* project: project.projectId,
* name: "rs-cluster",
* location: "us-central1-a",
* initialNodeCount: 1,
* minMasterVersion: versions.apply(versions => versions.releaseChannelDefaultVersion?.REGULAR),
* nodeVersion: versions.apply(versions => versions.releaseChannelDefaultVersion?.REGULAR),
* deletionProtection: false,
* releaseChannel: {
* channel: "REGULAR",
* },
* resourceLabels: {
* rs_test_cluster: "tf-test-_25601",
* },
* fleet: {
* project: project.number,
* },
* }, {
* dependsOn: [_default],
* });
* const rolloutSequence = new gcp.gkehub.RolloutSequence("rollout_sequence", {
* project: project.projectId,
* rolloutSequenceId: "rs-user-triggered",
* displayName: "User Triggered Rollout Sequence",
* minControlPlaneVersion: versions.apply(versions => versions.releaseChannelLatestVersion?.REGULAR),
* ignoredClustersSelector: {
* labelSelector: "!(has(resource.labels.rs_test_cluster) && resource.labels.rs_test_cluster == 'tf-test-_17228')",
* },
* stages: [{
* fleetProjects: [pulumi.interpolate`projects/${project.projectId}`],
* soakDuration: "30s",
* }],
* autoUpgradeConfig: {
* rolloutCreationScope: {
* upgradeTypes: [],
* },
* },
* }, {
* dependsOn: [primary],
* });
* ```
*
* ## Import
*
* RolloutSequence can be imported using any of these accepted formats:
*
* * `projects/{{project}}/locations/global/rolloutSequences/{{rollout_sequence_id}}`
* * `{{project}}/{{rollout_sequence_id}}`
* * `{{rollout_sequence_id}}`
*
* When using the `pulumi import` command, RolloutSequence can be imported using one of the formats above. For example:
*
* ```sh
* $ pulumi import gcp:gkehub/rolloutSequence:RolloutSequence default projects/{{project}}/locations/global/rolloutSequences/{{rollout_sequence_id}}
* $ pulumi import gcp:gkehub/rolloutSequence:RolloutSequence default {{project}}/{{rollout_sequence_id}}
* $ pulumi import gcp:gkehub/rolloutSequence:RolloutSequence default {{rollout_sequence_id}}
* ```
*/
export declare class RolloutSequence extends pulumi.CustomResource {
/**
* Get an existing RolloutSequence 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?: RolloutSequenceState, opts?: pulumi.CustomResourceOptions): RolloutSequence;
/**
* Returns true if the given object is an instance of RolloutSequence. 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 RolloutSequence;
/**
* Configuration for automatic upgrades.
* If not specified, the system applies default behavior.
* Structure is documented below.
*/
readonly autoUpgradeConfig: pulumi.Output<outputs.gkehub.RolloutSequenceAutoUpgradeConfig | undefined>;
/**
* The timestamp at which the Rollout Sequence was created.
*/
readonly createTime: pulumi.Output<string>;
/**
* The timestamp at the Rollout Sequence was deleted.
*/
readonly deleteTime: pulumi.Output<string>;
/**
* Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
* When a 'terraform destroy' or 'pulumi up' would delete the resource,
* the command will fail if this field is set to "PREVENT" in Terraform state.
* When set to "ABANDON", the command will remove the resource from Terraform
* management without updating or deleting the resource in the API.
* When set to "DELETE", deleting the resource is allowed.
*/
readonly deletionPolicy: pulumi.Output<string>;
/**
* Human readable display name of the Rollout Sequence.
*/
readonly displayName: pulumi.Output<string | undefined>;
/**
* 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;
}>;
/**
* etag of the Rollout Sequence.
*/
readonly etag: pulumi.Output<string>;
/**
* Selector for clusters to exclude from the Rollout Sequence.
* Structure is documented below.
*/
readonly ignoredClustersSelector: pulumi.Output<outputs.gkehub.RolloutSequenceIgnoredClustersSelector | undefined>;
/**
* Labels for this Rollout Sequence.
*
* **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>;
/**
* Minimum control plane version that the clusters in the sequence should be upgraded to.
* Setting this field will cause the creation of a rollout to the specified version.
* Any rollout of the same type already running on the first stage of the sequence will be cancelled to allow for the creation of the new rollout.
* Should be a valid [semantic version](https://semver.org/).
* Version aliases are supported, as described in the [cluster version docs](https://docs.cloud.google.com/kubernetes-engine/versioning#specifying_cluster_version).
* Note that the `latest` and `-` aliases are not supported for this field.
* Supported formats: `1.X`, `1.X.Y`, `1.X.Y-gke.N`.
*/
readonly minControlPlaneVersion: pulumi.Output<string | undefined>;
/**
* Minimum node version that the clusters in the sequence should be upgraded to.
* Setting this field will cause the creation of a rollout to the specified version.
* Any rollout of the same type already running on the first stage of the sequence will be cancelled to allow for the creation of the new rollout.
* Should be a valid [semantic version](https://semver.org/).
* Version aliases are supported, as described in the [cluster version docs](https://docs.cloud.google.com/kubernetes-engine/versioning#specifying_cluster_version).
* Note that the `latest` and `-` aliases are not supported for this field.
* Supported formats: `1.X`, `1.X.Y`, `1.X.Y-gke.N`.
*/
readonly minNodeVersion: pulumi.Output<string | undefined>;
/**
* The full resource name of the RolloutSequence.
*/
readonly name: pulumi.Output<string>;
/**
* The operational state of the rollout sequence.
* Structure is documented below.
*/
readonly operationalStates: pulumi.Output<outputs.gkehub.RolloutSequenceOperationalState[]>;
/**
* 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 user-provided identifier of the RolloutSequence.
*/
readonly rolloutSequenceId: pulumi.Output<string>;
/**
* Ordered list of stages that constitute this Rollout Sequence.
* Structure is documented below.
*/
readonly stages: pulumi.Output<outputs.gkehub.RolloutSequenceStage[]>;
/**
* The current target control plane version.
*/
readonly targetControlPlaneVersion: pulumi.Output<string>;
/**
* The current target node version.
*/
readonly targetNodeVersion: pulumi.Output<string>;
/**
* Google-generated UUID for this resource.
*/
readonly uid: pulumi.Output<string>;
/**
* The timestamp at which the Rollout Sequence was last updated.
*/
readonly updateTime: pulumi.Output<string>;
/**
* Create a RolloutSequence 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: RolloutSequenceArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering RolloutSequence resources.
*/
export interface RolloutSequenceState {
/**
* Configuration for automatic upgrades.
* If not specified, the system applies default behavior.
* Structure is documented below.
*/
autoUpgradeConfig?: pulumi.Input<inputs.gkehub.RolloutSequenceAutoUpgradeConfig | undefined>;
/**
* The timestamp at which the Rollout Sequence was created.
*/
createTime?: pulumi.Input<string | undefined>;
/**
* The timestamp at the Rollout Sequence was deleted.
*/
deleteTime?: pulumi.Input<string | undefined>;
/**
* Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
* When a 'terraform destroy' or 'pulumi up' would delete the resource,
* the command will fail if this field is set to "PREVENT" in Terraform state.
* When set to "ABANDON", the command will remove the resource from Terraform
* management without updating or deleting the resource in the API.
* When set to "DELETE", deleting the resource is allowed.
*/
deletionPolicy?: pulumi.Input<string | undefined>;
/**
* Human readable display name of the Rollout Sequence.
*/
displayName?: pulumi.Input<string | undefined>;
/**
* 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>;
} | undefined>;
/**
* etag of the Rollout Sequence.
*/
etag?: pulumi.Input<string | undefined>;
/**
* Selector for clusters to exclude from the Rollout Sequence.
* Structure is documented below.
*/
ignoredClustersSelector?: pulumi.Input<inputs.gkehub.RolloutSequenceIgnoredClustersSelector | undefined>;
/**
* Labels for this Rollout Sequence.
*
* **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>;
} | undefined>;
/**
* Minimum control plane version that the clusters in the sequence should be upgraded to.
* Setting this field will cause the creation of a rollout to the specified version.
* Any rollout of the same type already running on the first stage of the sequence will be cancelled to allow for the creation of the new rollout.
* Should be a valid [semantic version](https://semver.org/).
* Version aliases are supported, as described in the [cluster version docs](https://docs.cloud.google.com/kubernetes-engine/versioning#specifying_cluster_version).
* Note that the `latest` and `-` aliases are not supported for this field.
* Supported formats: `1.X`, `1.X.Y`, `1.X.Y-gke.N`.
*/
minControlPlaneVersion?: pulumi.Input<string | undefined>;
/**
* Minimum node version that the clusters in the sequence should be upgraded to.
* Setting this field will cause the creation of a rollout to the specified version.
* Any rollout of the same type already running on the first stage of the sequence will be cancelled to allow for the creation of the new rollout.
* Should be a valid [semantic version](https://semver.org/).
* Version aliases are supported, as described in the [cluster version docs](https://docs.cloud.google.com/kubernetes-engine/versioning#specifying_cluster_version).
* Note that the `latest` and `-` aliases are not supported for this field.
* Supported formats: `1.X`, `1.X.Y`, `1.X.Y-gke.N`.
*/
minNodeVersion?: pulumi.Input<string | undefined>;
/**
* The full resource name of the RolloutSequence.
*/
name?: pulumi.Input<string | undefined>;
/**
* The operational state of the rollout sequence.
* Structure is documented below.
*/
operationalStates?: pulumi.Input<pulumi.Input<inputs.gkehub.RolloutSequenceOperationalState>[] | undefined>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
project?: pulumi.Input<string | undefined>;
/**
* The combination of labels configured directly on the resource
* and default labels configured on the provider.
*/
pulumiLabels?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
} | undefined>;
/**
* The user-provided identifier of the RolloutSequence.
*/
rolloutSequenceId?: pulumi.Input<string | undefined>;
/**
* Ordered list of stages that constitute this Rollout Sequence.
* Structure is documented below.
*/
stages?: pulumi.Input<pulumi.Input<inputs.gkehub.RolloutSequenceStage>[] | undefined>;
/**
* The current target control plane version.
*/
targetControlPlaneVersion?: pulumi.Input<string | undefined>;
/**
* The current target node version.
*/
targetNodeVersion?: pulumi.Input<string | undefined>;
/**
* Google-generated UUID for this resource.
*/
uid?: pulumi.Input<string | undefined>;
/**
* The timestamp at which the Rollout Sequence was last updated.
*/
updateTime?: pulumi.Input<string | undefined>;
}
/**
* The set of arguments for constructing a RolloutSequence resource.
*/
export interface RolloutSequenceArgs {
/**
* Configuration for automatic upgrades.
* If not specified, the system applies default behavior.
* Structure is documented below.
*/
autoUpgradeConfig?: pulumi.Input<inputs.gkehub.RolloutSequenceAutoUpgradeConfig | undefined>;
/**
* Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
* When a 'terraform destroy' or 'pulumi up' would delete the resource,
* the command will fail if this field is set to "PREVENT" in Terraform state.
* When set to "ABANDON", the command will remove the resource from Terraform
* management without updating or deleting the resource in the API.
* When set to "DELETE", deleting the resource is allowed.
*/
deletionPolicy?: pulumi.Input<string | undefined>;
/**
* Human readable display name of the Rollout Sequence.
*/
displayName?: pulumi.Input<string | undefined>;
/**
* Selector for clusters to exclude from the Rollout Sequence.
* Structure is documented below.
*/
ignoredClustersSelector?: pulumi.Input<inputs.gkehub.RolloutSequenceIgnoredClustersSelector | undefined>;
/**
* Labels for this Rollout Sequence.
*
* **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>;
} | undefined>;
/**
* Minimum control plane version that the clusters in the sequence should be upgraded to.
* Setting this field will cause the creation of a rollout to the specified version.
* Any rollout of the same type already running on the first stage of the sequence will be cancelled to allow for the creation of the new rollout.
* Should be a valid [semantic version](https://semver.org/).
* Version aliases are supported, as described in the [cluster version docs](https://docs.cloud.google.com/kubernetes-engine/versioning#specifying_cluster_version).
* Note that the `latest` and `-` aliases are not supported for this field.
* Supported formats: `1.X`, `1.X.Y`, `1.X.Y-gke.N`.
*/
minControlPlaneVersion?: pulumi.Input<string | undefined>;
/**
* Minimum node version that the clusters in the sequence should be upgraded to.
* Setting this field will cause the creation of a rollout to the specified version.
* Any rollout of the same type already running on the first stage of the sequence will be cancelled to allow for the creation of the new rollout.
* Should be a valid [semantic version](https://semver.org/).
* Version aliases are supported, as described in the [cluster version docs](https://docs.cloud.google.com/kubernetes-engine/versioning#specifying_cluster_version).
* Note that the `latest` and `-` aliases are not supported for this field.
* Supported formats: `1.X`, `1.X.Y`, `1.X.Y-gke.N`.
*/
minNodeVersion?: pulumi.Input<string | undefined>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
project?: pulumi.Input<string | undefined>;
/**
* The user-provided identifier of the RolloutSequence.
*/
rolloutSequenceId: pulumi.Input<string>;
/**
* Ordered list of stages that constitute this Rollout Sequence.
* Structure is documented below.
*/
stages: pulumi.Input<pulumi.Input<inputs.gkehub.RolloutSequenceStage>[]>;
}
//# sourceMappingURL=rolloutSequence.d.ts.map