import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Cluster resource in Oracle Cloud Infrastructure Container Engine service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/containerengine/latest/Cluster
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/container_engine
 *
 * Create a new cluster.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testCluster = new oci.containerengine.Cluster("test_cluster", {
 *     compartmentId: compartmentId,
 *     kubernetesVersion: clusterKubernetesVersion,
 *     name: clusterName,
 *     vcnId: testVcn.id,
 *     clusterPodNetworkOptions: [{
 *         cniType: clusterClusterPodNetworkOptionsCniType,
 *     }],
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     endpointConfig: {
 *         isPublicIpEnabled: clusterEndpointConfigIsPublicIpEnabled === "true",
 *         nsgIds: clusterEndpointConfigNsgIds,
 *         securityAttributes: clusterEndpointConfigSecurityAttributes,
 *         subnetId: testSubnet.id,
 *     },
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     imagePolicyConfig: {
 *         isPolicyEnabled: clusterImagePolicyConfigIsPolicyEnabled === "true",
 *         keyDetails: [{
 *             kmsKeyId: testKey.id,
 *         }],
 *     },
 *     kmsKeyId: testKey.id,
 *     options: {
 *         addOns: {
 *             isKubernetesDashboardEnabled: clusterOptionsAddOnsIsKubernetesDashboardEnabled === "true",
 *             isTillerEnabled: clusterOptionsAddOnsIsTillerEnabled === "true",
 *         },
 *         admissionControllerOptions: {
 *             isPodSecurityPolicyEnabled: clusterOptionsAdmissionControllerOptionsIsPodSecurityPolicyEnabled === "true",
 *         },
 *         ipFamilies: clusterOptionsIpFamilies,
 *         kubernetesNetworkConfig: {
 *             podsCidr: clusterOptionsKubernetesNetworkConfigPodsCidr,
 *             servicesCidr: clusterOptionsKubernetesNetworkConfigServicesCidr,
 *         },
 *         openIdConnectTokenAuthenticationConfig: {
 *             isOpenIdConnectAuthEnabled: clusterOptionsOpenIdConnectTokenAuthenticationConfigIsOpenIdConnectAuthEnabled === "true",
 *             caCertificate: clusterOptionsOpenIdConnectTokenAuthenticationConfigCaCertificate,
 *             clientId: testClient.id,
 *             configurationFile: clusterOptionsOpenIdConnectTokenAuthenticationConfigConfigurationFile,
 *             groupsClaim: clusterOptionsOpenIdConnectTokenAuthenticationConfigGroupsClaim,
 *             groupsPrefix: clusterOptionsOpenIdConnectTokenAuthenticationConfigGroupsPrefix,
 *             issuerUrl: clusterOptionsOpenIdConnectTokenAuthenticationConfigIssuerUrl,
 *             requiredClaims: [{
 *                 key: clusterOptionsOpenIdConnectTokenAuthenticationConfigRequiredClaimsKey,
 *                 value: clusterOptionsOpenIdConnectTokenAuthenticationConfigRequiredClaimsValue,
 *             }],
 *             signingAlgorithms: clusterOptionsOpenIdConnectTokenAuthenticationConfigSigningAlgorithms,
 *             usernameClaim: clusterOptionsOpenIdConnectTokenAuthenticationConfigUsernameClaim,
 *             usernamePrefix: clusterOptionsOpenIdConnectTokenAuthenticationConfigUsernamePrefix,
 *         },
 *         openIdConnectDiscovery: {
 *             isOpenIdConnectDiscoveryEnabled: clusterOptionsOpenIdConnectDiscoveryIsOpenIdConnectDiscoveryEnabled === "true",
 *         },
 *         persistentVolumeConfig: {
 *             definedTags: {
 *                 "Operations.CostCenter": "42",
 *             },
 *             freeformTags: {
 *                 Department: "Finance",
 *             },
 *         },
 *         serviceLbConfig: {
 *             backendNsgIds: clusterOptionsServiceLbConfigBackendNsgIds,
 *             definedTags: {
 *                 "Operations.CostCenter": "42",
 *             },
 *             freeformTags: {
 *                 Department: "Finance",
 *             },
 *         },
 *         serviceLbSubnetIds: clusterOptionsServiceLbSubnetIds,
 *     },
 *     type: clusterType,
 * });
 * ```
 *
 * ## Import
 *
 * Clusters can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:ContainerEngine/cluster:Cluster test_cluster "id"
 * ```
 */
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;
    /**
     * Available Kubernetes versions to which the clusters masters may be upgraded.
     */
    readonly availableKubernetesUpgrades: pulumi.Output<string[]>;
    /**
     * Available CNIs and network options for existing and new node pools of the cluster
     */
    readonly clusterPodNetworkOptions: pulumi.Output<outputs.ContainerEngine.ClusterClusterPodNetworkOption[]>;
    /**
     * The OCID of the compartment in which to create the cluster.
     */
    readonly compartmentId: pulumi.Output<string>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}`
     */
    readonly definedTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * The network configuration for access to the Cluster control plane.
     */
    readonly endpointConfig: pulumi.Output<outputs.ContainerEngine.ClusterEndpointConfig | undefined>;
    /**
     * Endpoints served up by the cluster masters.
     */
    readonly endpoints: pulumi.Output<outputs.ContainerEngine.ClusterEndpoint[]>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}`
     */
    readonly freeformTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) The image verification policy for signature validation. Once a policy is created and enabled with one or more kms keys, the policy will ensure all images deployed has been signed with the key(s) attached to the policy.
     */
    readonly imagePolicyConfig: pulumi.Output<outputs.ContainerEngine.ClusterImagePolicyConfig>;
    /**
     * The OCID of the KMS key to be used as the master encryption key for Kubernetes secret encryption. When used, `kubernetesVersion` must be at least `v1.13.0`.
     */
    readonly kmsKeyId: pulumi.Output<string>;
    /**
     * (Updatable) The version of Kubernetes to install into the cluster masters.
     */
    readonly kubernetesVersion: pulumi.Output<string>;
    /**
     * Details about the state of the cluster masters.
     */
    readonly lifecycleDetails: pulumi.Output<string>;
    /**
     * Metadata about the cluster.
     */
    readonly metadatas: pulumi.Output<outputs.ContainerEngine.ClusterMetadata[]>;
    /**
     * (Updatable) The name of the cluster. Avoid entering confidential information.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The cluster-specific OpenID Connect Discovery endpoint
     */
    readonly openIdConnectDiscoveryEndpoint: pulumi.Output<string>;
    /**
     * The cluster-specific OpenID Connect Discovery Key to derive the DiscoveryEndpoint
     */
    readonly openIdConnectDiscoveryKey: pulumi.Output<string>;
    /**
     * (Updatable) Optional attributes for the cluster.
     */
    readonly options: pulumi.Output<outputs.ContainerEngine.ClusterOptions>;
    /**
     * The state of the cluster masters.
     */
    readonly state: pulumi.Output<string>;
    /**
     * (Updatable) Type of cluster
     */
    readonly type: pulumi.Output<string>;
    /**
     * The OCID of the virtual cloud network (VCN) in which to create the cluster.
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    readonly vcnId: 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 {
    /**
     * Available Kubernetes versions to which the clusters masters may be upgraded.
     */
    availableKubernetesUpgrades?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Available CNIs and network options for existing and new node pools of the cluster
     */
    clusterPodNetworkOptions?: pulumi.Input<pulumi.Input<inputs.ContainerEngine.ClusterClusterPodNetworkOption>[] | undefined>;
    /**
     * The OCID of the compartment in which to create the cluster.
     */
    compartmentId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The network configuration for access to the Cluster control plane.
     */
    endpointConfig?: pulumi.Input<inputs.ContainerEngine.ClusterEndpointConfig | undefined>;
    /**
     * Endpoints served up by the cluster masters.
     */
    endpoints?: pulumi.Input<pulumi.Input<inputs.ContainerEngine.ClusterEndpoint>[] | undefined>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) The image verification policy for signature validation. Once a policy is created and enabled with one or more kms keys, the policy will ensure all images deployed has been signed with the key(s) attached to the policy.
     */
    imagePolicyConfig?: pulumi.Input<inputs.ContainerEngine.ClusterImagePolicyConfig | undefined>;
    /**
     * The OCID of the KMS key to be used as the master encryption key for Kubernetes secret encryption. When used, `kubernetesVersion` must be at least `v1.13.0`.
     */
    kmsKeyId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The version of Kubernetes to install into the cluster masters.
     */
    kubernetesVersion?: pulumi.Input<string | undefined>;
    /**
     * Details about the state of the cluster masters.
     */
    lifecycleDetails?: pulumi.Input<string | undefined>;
    /**
     * Metadata about the cluster.
     */
    metadatas?: pulumi.Input<pulumi.Input<inputs.ContainerEngine.ClusterMetadata>[] | undefined>;
    /**
     * (Updatable) The name of the cluster. Avoid entering confidential information.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The cluster-specific OpenID Connect Discovery endpoint
     */
    openIdConnectDiscoveryEndpoint?: pulumi.Input<string | undefined>;
    /**
     * The cluster-specific OpenID Connect Discovery Key to derive the DiscoveryEndpoint
     */
    openIdConnectDiscoveryKey?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Optional attributes for the cluster.
     */
    options?: pulumi.Input<inputs.ContainerEngine.ClusterOptions | undefined>;
    /**
     * The state of the cluster masters.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Type of cluster
     */
    type?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the virtual cloud network (VCN) in which to create the cluster.
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    vcnId?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a Cluster resource.
 */
export interface ClusterArgs {
    /**
     * Available CNIs and network options for existing and new node pools of the cluster
     */
    clusterPodNetworkOptions?: pulumi.Input<pulumi.Input<inputs.ContainerEngine.ClusterClusterPodNetworkOption>[] | undefined>;
    /**
     * The OCID of the compartment in which to create the cluster.
     */
    compartmentId: pulumi.Input<string>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The network configuration for access to the Cluster control plane.
     */
    endpointConfig?: pulumi.Input<inputs.ContainerEngine.ClusterEndpointConfig | undefined>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) The image verification policy for signature validation. Once a policy is created and enabled with one or more kms keys, the policy will ensure all images deployed has been signed with the key(s) attached to the policy.
     */
    imagePolicyConfig?: pulumi.Input<inputs.ContainerEngine.ClusterImagePolicyConfig | undefined>;
    /**
     * The OCID of the KMS key to be used as the master encryption key for Kubernetes secret encryption. When used, `kubernetesVersion` must be at least `v1.13.0`.
     */
    kmsKeyId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The version of Kubernetes to install into the cluster masters.
     */
    kubernetesVersion: pulumi.Input<string>;
    /**
     * (Updatable) The name of the cluster. Avoid entering confidential information.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Optional attributes for the cluster.
     */
    options?: pulumi.Input<inputs.ContainerEngine.ClusterOptions | undefined>;
    /**
     * (Updatable) Type of cluster
     */
    type?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the virtual cloud network (VCN) in which to create the cluster.
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    vcnId: pulumi.Input<string>;
}
//# sourceMappingURL=cluster.d.ts.map