UNPKG

@pulumi/kubernetes

Version:

[![Actions Status](https://github.com/pulumi/pulumi-kubernetes/workflows/main/badge.svg)](https://github.com/pulumi/pulumi-kubernetes/actions) [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com) [![NPM version](https:/

233 lines 8.86 kB
import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../../types/input"; import * as outputs from "../../types/output"; /** * StatefulSet represents a set of pods with consistent identities. Identities are defined as: * - Network: A single stable DNS and hostname. * - Storage: As many VolumeClaims as requested. * * The StatefulSet guarantees that a given network identity will always map to the same storage identity. * * This resource waits until its status is ready before registering success * for create/update, and populating output properties from the current state of the resource. * The following conditions are used to determine whether the resource creation has * succeeded or failed: * * 1. The value of 'spec.replicas' matches '.status.replicas', '.status.currentReplicas', * and '.status.readyReplicas'. * 2. The value of '.status.updateRevision' matches '.status.currentRevision'. * * If the StatefulSet has not reached a Ready state after 10 minutes, it will * time out and mark the resource update as Failed. You can override the default timeout value * by setting the 'customTimeouts' option on the resource. * * ## Example Usage * ### Create a StatefulSet with auto-naming * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as kubernetes from "@pulumi/kubernetes"; * * const service = new kubernetes.core.v1.Service("service", { * metadata: { * labels: { * app: "nginx", * }, * }, * spec: { * clusterIP: "None", * ports: [{ * name: "web", * port: 80, * }], * selector: { * app: "nginx", * }, * }, * }); * const statefulset = new kubernetes.apps.v1.StatefulSet("statefulset", {spec: { * replicas: 3, * selector: { * matchLabels: { * app: "nginx", * }, * }, * serviceName: service.metadata.apply(metadata => metadata?.name), * template: { * metadata: { * labels: { * app: "nginx", * }, * }, * spec: { * containers: [{ * image: "nginx:stable-alpine3.17-slim", * name: "nginx", * ports: [{ * containerPort: 80, * name: "web", * }], * volumeMounts: [{ * mountPath: "/usr/share/nginx/html", * name: "www", * }], * }], * terminationGracePeriodSeconds: 10, * }, * }, * volumeClaimTemplates: [{ * metadata: { * name: "www", * }, * spec: { * accessModes: ["ReadWriteOnce"], * resources: { * requests: { * storage: "1Gi", * }, * }, * }, * }], * }}); * ``` * ### Create a StatefulSet with a user-specified name * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as kubernetes from "@pulumi/kubernetes"; * * const service = new kubernetes.core.v1.Service("service", { * metadata: { * labels: { * app: "nginx", * }, * name: "nginx", * }, * spec: { * clusterIP: "None", * ports: [{ * name: "web", * port: 80, * }], * selector: { * app: "nginx", * }, * }, * }); * const statefulset = new kubernetes.apps.v1.StatefulSet("statefulset", { * metadata: { * name: "web", * }, * spec: { * replicas: 3, * selector: { * matchLabels: { * app: "nginx", * }, * }, * serviceName: service.metadata.apply(metadata => metadata?.name), * template: { * metadata: { * labels: { * app: "nginx", * }, * }, * spec: { * containers: [{ * image: "nginx:stable-alpine3.17-slim", * name: "nginx", * ports: [{ * containerPort: 80, * name: "web", * }], * volumeMounts: [{ * mountPath: "/usr/share/nginx/html", * name: "www", * }], * }], * terminationGracePeriodSeconds: 10, * }, * }, * volumeClaimTemplates: [{ * metadata: { * name: "www", * }, * spec: { * accessModes: ["ReadWriteOnce"], * resources: { * requests: { * storage: "1Gi", * }, * }, * }, * }], * }, * }); * ``` */ export declare class StatefulSet extends pulumi.CustomResource { /** * Get an existing StatefulSet 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 opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input<pulumi.ID>, opts?: pulumi.CustomResourceOptions): StatefulSet; /** * Returns true if the given object is an instance of StatefulSet. 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 StatefulSet; /** * APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources */ readonly apiVersion: pulumi.Output<"apps/v1">; /** * Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds */ readonly kind: pulumi.Output<"StatefulSet">; /** * Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata */ readonly metadata: pulumi.Output<outputs.meta.v1.ObjectMeta>; /** * Spec defines the desired identities of pods in this set. */ readonly spec: pulumi.Output<outputs.apps.v1.StatefulSetSpec>; /** * Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time. */ readonly status: pulumi.Output<outputs.apps.v1.StatefulSetStatus>; /** * Create a StatefulSet 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?: StatefulSetArgs, opts?: pulumi.CustomResourceOptions); } /** * The set of arguments for constructing a StatefulSet resource. */ export interface StatefulSetArgs { /** * APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources */ apiVersion?: pulumi.Input<"apps/v1" | undefined>; /** * Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds */ kind?: pulumi.Input<"StatefulSet" | undefined>; /** * Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata */ metadata?: pulumi.Input<inputs.meta.v1.ObjectMeta | undefined>; /** * Spec defines the desired identities of pods in this set. */ spec?: pulumi.Input<inputs.apps.v1.StatefulSetSpec | undefined>; } //# sourceMappingURL=statefulSet.d.ts.map