pulumiverse-scaleway 1.23.0a1736837529__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pulumiverse-scaleway might be problematic. Click here for more details.

Files changed (205) hide show
  1. pulumiverse_scaleway/__init__.py +1065 -0
  2. pulumiverse_scaleway/_inputs.py +8688 -0
  3. pulumiverse_scaleway/_utilities.py +327 -0
  4. pulumiverse_scaleway/account_project.py +316 -0
  5. pulumiverse_scaleway/account_ssh_key.py +454 -0
  6. pulumiverse_scaleway/apple_silicon_server.py +564 -0
  7. pulumiverse_scaleway/baremetal_server.py +1579 -0
  8. pulumiverse_scaleway/block_snapshot.py +401 -0
  9. pulumiverse_scaleway/block_volume.py +527 -0
  10. pulumiverse_scaleway/cockpit.py +314 -0
  11. pulumiverse_scaleway/cockpit_alert_manager.py +401 -0
  12. pulumiverse_scaleway/cockpit_grafana_user.py +362 -0
  13. pulumiverse_scaleway/cockpit_source.py +567 -0
  14. pulumiverse_scaleway/cockpit_token.py +479 -0
  15. pulumiverse_scaleway/config/__init__.py +8 -0
  16. pulumiverse_scaleway/config/__init__.pyi +56 -0
  17. pulumiverse_scaleway/config/vars.py +78 -0
  18. pulumiverse_scaleway/container.py +1373 -0
  19. pulumiverse_scaleway/container_cron.py +458 -0
  20. pulumiverse_scaleway/container_domain.py +406 -0
  21. pulumiverse_scaleway/container_namespace.py +636 -0
  22. pulumiverse_scaleway/container_token.py +452 -0
  23. pulumiverse_scaleway/container_trigger.py +480 -0
  24. pulumiverse_scaleway/database.py +407 -0
  25. pulumiverse_scaleway/database_acl.py +332 -0
  26. pulumiverse_scaleway/database_backup.py +574 -0
  27. pulumiverse_scaleway/database_instance.py +1641 -0
  28. pulumiverse_scaleway/database_privilege.py +422 -0
  29. pulumiverse_scaleway/database_read_replica.py +528 -0
  30. pulumiverse_scaleway/database_user.py +446 -0
  31. pulumiverse_scaleway/domain_record.py +1116 -0
  32. pulumiverse_scaleway/domain_zone.py +430 -0
  33. pulumiverse_scaleway/flexible_ip.py +702 -0
  34. pulumiverse_scaleway/flexible_ip_mac_address.py +510 -0
  35. pulumiverse_scaleway/function.py +1103 -0
  36. pulumiverse_scaleway/function_cron.py +462 -0
  37. pulumiverse_scaleway/function_domain.py +370 -0
  38. pulumiverse_scaleway/function_namespace.py +580 -0
  39. pulumiverse_scaleway/function_token.py +460 -0
  40. pulumiverse_scaleway/function_trigger.py +480 -0
  41. pulumiverse_scaleway/get_account_project.py +170 -0
  42. pulumiverse_scaleway/get_account_ssh_key.py +205 -0
  43. pulumiverse_scaleway/get_availability_zones.py +139 -0
  44. pulumiverse_scaleway/get_baremetal_offer.py +245 -0
  45. pulumiverse_scaleway/get_baremetal_option.py +168 -0
  46. pulumiverse_scaleway/get_baremetal_os.py +174 -0
  47. pulumiverse_scaleway/get_baremetal_server.py +422 -0
  48. pulumiverse_scaleway/get_billing_consumptions.py +134 -0
  49. pulumiverse_scaleway/get_billing_invoices.py +154 -0
  50. pulumiverse_scaleway/get_block_snapshot.py +174 -0
  51. pulumiverse_scaleway/get_block_volume.py +188 -0
  52. pulumiverse_scaleway/get_cockpit.py +204 -0
  53. pulumiverse_scaleway/get_cockpit_plan.py +125 -0
  54. pulumiverse_scaleway/get_cockpit_source.py +262 -0
  55. pulumiverse_scaleway/get_config.py +180 -0
  56. pulumiverse_scaleway/get_container.py +522 -0
  57. pulumiverse_scaleway/get_container_namespace.py +283 -0
  58. pulumiverse_scaleway/get_database.py +187 -0
  59. pulumiverse_scaleway/get_database_acl.py +143 -0
  60. pulumiverse_scaleway/get_database_backup.py +253 -0
  61. pulumiverse_scaleway/get_database_instance.py +404 -0
  62. pulumiverse_scaleway/get_database_privilege.py +181 -0
  63. pulumiverse_scaleway/get_domain_record.py +340 -0
  64. pulumiverse_scaleway/get_domain_zone.py +201 -0
  65. pulumiverse_scaleway/get_flexible_ip.py +247 -0
  66. pulumiverse_scaleway/get_flexible_ips.py +240 -0
  67. pulumiverse_scaleway/get_function.py +365 -0
  68. pulumiverse_scaleway/get_function_namespace.py +238 -0
  69. pulumiverse_scaleway/get_iam_api_key.py +210 -0
  70. pulumiverse_scaleway/get_iam_application.py +210 -0
  71. pulumiverse_scaleway/get_iam_group.py +236 -0
  72. pulumiverse_scaleway/get_iam_ssh_key.py +212 -0
  73. pulumiverse_scaleway/get_iam_user.py +177 -0
  74. pulumiverse_scaleway/get_instance_image.py +305 -0
  75. pulumiverse_scaleway/get_instance_ip.py +204 -0
  76. pulumiverse_scaleway/get_instance_placement_group.py +212 -0
  77. pulumiverse_scaleway/get_instance_private_nic.py +226 -0
  78. pulumiverse_scaleway/get_instance_security_group.py +268 -0
  79. pulumiverse_scaleway/get_instance_server.py +502 -0
  80. pulumiverse_scaleway/get_instance_servers.py +187 -0
  81. pulumiverse_scaleway/get_instance_snapshot.py +248 -0
  82. pulumiverse_scaleway/get_instance_volume.py +215 -0
  83. pulumiverse_scaleway/get_iot_device.py +257 -0
  84. pulumiverse_scaleway/get_iot_hub.py +322 -0
  85. pulumiverse_scaleway/get_ipam_ip.py +419 -0
  86. pulumiverse_scaleway/get_ipam_ips.py +358 -0
  87. pulumiverse_scaleway/get_k8s_version.py +196 -0
  88. pulumiverse_scaleway/get_kubernetes_cluster.py +417 -0
  89. pulumiverse_scaleway/get_kubernetes_node_pool.py +436 -0
  90. pulumiverse_scaleway/get_lb_acls.py +198 -0
  91. pulumiverse_scaleway/get_lb_backend.py +486 -0
  92. pulumiverse_scaleway/get_lb_backends.py +196 -0
  93. pulumiverse_scaleway/get_lb_frontend.py +274 -0
  94. pulumiverse_scaleway/get_lb_frontends.py +196 -0
  95. pulumiverse_scaleway/get_lb_ips.py +198 -0
  96. pulumiverse_scaleway/get_lb_route.py +217 -0
  97. pulumiverse_scaleway/get_lb_routes.py +179 -0
  98. pulumiverse_scaleway/get_lbs.py +187 -0
  99. pulumiverse_scaleway/get_loadbalancer.py +339 -0
  100. pulumiverse_scaleway/get_loadbalancer_certificate.py +230 -0
  101. pulumiverse_scaleway/get_loadbalancer_ip.py +228 -0
  102. pulumiverse_scaleway/get_marketplace_image.py +147 -0
  103. pulumiverse_scaleway/get_mnq_sns.py +150 -0
  104. pulumiverse_scaleway/get_mnq_sqs.py +150 -0
  105. pulumiverse_scaleway/get_mongo_db_instance.py +324 -0
  106. pulumiverse_scaleway/get_object_bucket.py +290 -0
  107. pulumiverse_scaleway/get_object_bucket_policy.py +163 -0
  108. pulumiverse_scaleway/get_redis_cluster.py +347 -0
  109. pulumiverse_scaleway/get_registry_image.py +239 -0
  110. pulumiverse_scaleway/get_registry_image_tag.py +229 -0
  111. pulumiverse_scaleway/get_registry_namespace.py +199 -0
  112. pulumiverse_scaleway/get_secret.py +338 -0
  113. pulumiverse_scaleway/get_secret_version.py +340 -0
  114. pulumiverse_scaleway/get_tem_domain.py +378 -0
  115. pulumiverse_scaleway/get_vpc.py +246 -0
  116. pulumiverse_scaleway/get_vpc_gateway_network.py +287 -0
  117. pulumiverse_scaleway/get_vpc_private_network.py +282 -0
  118. pulumiverse_scaleway/get_vpc_public_gateway.py +304 -0
  119. pulumiverse_scaleway/get_vpc_public_gateway_dhcp.py +305 -0
  120. pulumiverse_scaleway/get_vpc_public_gateway_dhcp_reservation.py +382 -0
  121. pulumiverse_scaleway/get_vpc_public_gateway_ip.py +199 -0
  122. pulumiverse_scaleway/get_vpc_public_pat_rule.py +313 -0
  123. pulumiverse_scaleway/get_vpc_routes.py +208 -0
  124. pulumiverse_scaleway/get_vpcs.py +174 -0
  125. pulumiverse_scaleway/get_web_host_offer.py +192 -0
  126. pulumiverse_scaleway/get_webhosting.py +332 -0
  127. pulumiverse_scaleway/iam_api_key.py +620 -0
  128. pulumiverse_scaleway/iam_application.py +417 -0
  129. pulumiverse_scaleway/iam_group.py +566 -0
  130. pulumiverse_scaleway/iam_group_membership.py +323 -0
  131. pulumiverse_scaleway/iam_policy.py +773 -0
  132. pulumiverse_scaleway/iam_ssh_key.py +455 -0
  133. pulumiverse_scaleway/iam_user.py +513 -0
  134. pulumiverse_scaleway/inference_deployment.py +822 -0
  135. pulumiverse_scaleway/instance_image.py +750 -0
  136. pulumiverse_scaleway/instance_ip.py +483 -0
  137. pulumiverse_scaleway/instance_ip_reverse_dns.py +308 -0
  138. pulumiverse_scaleway/instance_placement_group.py +479 -0
  139. pulumiverse_scaleway/instance_private_nic.py +555 -0
  140. pulumiverse_scaleway/instance_security_group.py +720 -0
  141. pulumiverse_scaleway/instance_security_group_rules.py +439 -0
  142. pulumiverse_scaleway/instance_server.py +2006 -0
  143. pulumiverse_scaleway/instance_snapshot.py +669 -0
  144. pulumiverse_scaleway/instance_user_data.py +435 -0
  145. pulumiverse_scaleway/instance_volume.py +535 -0
  146. pulumiverse_scaleway/iot_device.py +750 -0
  147. pulumiverse_scaleway/iot_hub.py +896 -0
  148. pulumiverse_scaleway/iot_network.py +472 -0
  149. pulumiverse_scaleway/iot_route.py +660 -0
  150. pulumiverse_scaleway/ipam_ip.py +757 -0
  151. pulumiverse_scaleway/ipam_ip_reverse_dns.py +318 -0
  152. pulumiverse_scaleway/job_definition.py +692 -0
  153. pulumiverse_scaleway/kubernetes_cluster.py +1538 -0
  154. pulumiverse_scaleway/kubernetes_node_pool.py +1255 -0
  155. pulumiverse_scaleway/loadbalancer.py +1061 -0
  156. pulumiverse_scaleway/loadbalancer_acl.py +520 -0
  157. pulumiverse_scaleway/loadbalancer_backend.py +1588 -0
  158. pulumiverse_scaleway/loadbalancer_certificate.py +460 -0
  159. pulumiverse_scaleway/loadbalancer_frontend.py +829 -0
  160. pulumiverse_scaleway/loadbalancer_ip.py +514 -0
  161. pulumiverse_scaleway/loadbalancer_route.py +523 -0
  162. pulumiverse_scaleway/mnq_nats_account.py +334 -0
  163. pulumiverse_scaleway/mnq_nats_credentials.py +330 -0
  164. pulumiverse_scaleway/mnq_sns.py +306 -0
  165. pulumiverse_scaleway/mnq_sns_credentials.py +413 -0
  166. pulumiverse_scaleway/mnq_sns_topic.py +659 -0
  167. pulumiverse_scaleway/mnq_sns_topic_subscription.py +699 -0
  168. pulumiverse_scaleway/mnq_sqs.py +304 -0
  169. pulumiverse_scaleway/mnq_sqs_credentials.py +413 -0
  170. pulumiverse_scaleway/mnq_sqs_queue.py +800 -0
  171. pulumiverse_scaleway/mongo_db_instance.py +907 -0
  172. pulumiverse_scaleway/mongo_db_snapshot.py +521 -0
  173. pulumiverse_scaleway/object_bucket.py +874 -0
  174. pulumiverse_scaleway/object_bucket_acl.py +596 -0
  175. pulumiverse_scaleway/object_bucket_lock_configuration.py +395 -0
  176. pulumiverse_scaleway/object_bucket_policy.py +673 -0
  177. pulumiverse_scaleway/object_bucket_website_configuration.py +534 -0
  178. pulumiverse_scaleway/object_item.py +776 -0
  179. pulumiverse_scaleway/outputs.py +11808 -0
  180. pulumiverse_scaleway/provider.py +327 -0
  181. pulumiverse_scaleway/pulumi-plugin.json +6 -0
  182. pulumiverse_scaleway/py.typed +0 -0
  183. pulumiverse_scaleway/redis_cluster.py +1201 -0
  184. pulumiverse_scaleway/registry_namespace.py +458 -0
  185. pulumiverse_scaleway/sdb_database.py +432 -0
  186. pulumiverse_scaleway/secret.py +663 -0
  187. pulumiverse_scaleway/secret_version.py +487 -0
  188. pulumiverse_scaleway/tem_domain.py +1030 -0
  189. pulumiverse_scaleway/tem_domain_validation.py +303 -0
  190. pulumiverse_scaleway/tem_webhook.py +640 -0
  191. pulumiverse_scaleway/vpc.py +536 -0
  192. pulumiverse_scaleway/vpc_gateway_network.py +866 -0
  193. pulumiverse_scaleway/vpc_private_network.py +734 -0
  194. pulumiverse_scaleway/vpc_public_gateway.py +789 -0
  195. pulumiverse_scaleway/vpc_public_gateway_dhcp.py +933 -0
  196. pulumiverse_scaleway/vpc_public_gateway_dhcp_reservation.py +514 -0
  197. pulumiverse_scaleway/vpc_public_gateway_ip.py +457 -0
  198. pulumiverse_scaleway/vpc_public_gateway_ip_reverse_dns.py +306 -0
  199. pulumiverse_scaleway/vpc_public_gateway_pat_rule.py +591 -0
  200. pulumiverse_scaleway/vpc_route.py +577 -0
  201. pulumiverse_scaleway/webhosting.py +805 -0
  202. pulumiverse_scaleway-1.23.0a1736837529.dist-info/METADATA +77 -0
  203. pulumiverse_scaleway-1.23.0a1736837529.dist-info/RECORD +205 -0
  204. pulumiverse_scaleway-1.23.0a1736837529.dist-info/WHEEL +5 -0
  205. pulumiverse_scaleway-1.23.0a1736837529.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1538 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from . import _utilities
16
+ from . import outputs
17
+ from ._inputs import *
18
+
19
+ __all__ = ['KubernetesClusterArgs', 'KubernetesCluster']
20
+
21
+ @pulumi.input_type
22
+ class KubernetesClusterArgs:
23
+ def __init__(__self__, *,
24
+ cni: pulumi.Input[str],
25
+ delete_additional_resources: pulumi.Input[bool],
26
+ version: pulumi.Input[str],
27
+ admission_plugins: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
28
+ apiserver_cert_sans: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
29
+ auto_upgrade: Optional[pulumi.Input['KubernetesClusterAutoUpgradeArgs']] = None,
30
+ autoscaler_config: Optional[pulumi.Input['KubernetesClusterAutoscalerConfigArgs']] = None,
31
+ description: Optional[pulumi.Input[str]] = None,
32
+ feature_gates: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
33
+ name: Optional[pulumi.Input[str]] = None,
34
+ open_id_connect_config: Optional[pulumi.Input['KubernetesClusterOpenIdConnectConfigArgs']] = None,
35
+ private_network_id: Optional[pulumi.Input[str]] = None,
36
+ project_id: Optional[pulumi.Input[str]] = None,
37
+ region: Optional[pulumi.Input[str]] = None,
38
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
39
+ type: Optional[pulumi.Input[str]] = None):
40
+ """
41
+ The set of arguments for constructing a KubernetesCluster resource.
42
+ :param pulumi.Input[str] cni: The Container Network Interface (CNI) for the Kubernetes cluster.
43
+ > **Important:** Updates to this field will recreate a new resource.
44
+ :param pulumi.Input[bool] delete_additional_resources: Delete additional resources like block volumes, load-balancers and the cluster's private network (if empty) that were created in Kubernetes on cluster deletion.
45
+ > **Important:** Setting this field to `true` means that you will lose all your cluster data and network configuration when you delete your cluster.
46
+ If you prefer keeping it, you should instead set it as `false`.
47
+ :param pulumi.Input[str] version: The version of the Kubernetes cluster.
48
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] admission_plugins: The list of [admission plugins](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/) to enable on the cluster.
49
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] apiserver_cert_sans: Additional Subject Alternative Names for the Kubernetes API server certificate
50
+ :param pulumi.Input['KubernetesClusterAutoUpgradeArgs'] auto_upgrade: The auto upgrade configuration.
51
+ :param pulumi.Input['KubernetesClusterAutoscalerConfigArgs'] autoscaler_config: The configuration options for the [Kubernetes cluster autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler).
52
+ :param pulumi.Input[str] description: A description for the Kubernetes cluster.
53
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] feature_gates: The list of [feature gates](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/) to enable on the cluster.
54
+ :param pulumi.Input[str] name: The name for the Kubernetes cluster.
55
+ :param pulumi.Input['KubernetesClusterOpenIdConnectConfigArgs'] open_id_connect_config: The OpenID Connect configuration of the cluster
56
+ :param pulumi.Input[str] private_network_id: The ID of the private network of the cluster.
57
+
58
+ > **Important:** Changes to this field will recreate a new resource.
59
+
60
+ > **Important:** Private Networks are now mandatory with Kapsule Clusters. If you have a legacy cluster (no `private_network_id` set),
61
+ you can still set it now. In this case it will not destroy and recreate your cluster but migrate it to the Private Network.
62
+ :param pulumi.Input[str] project_id: `project_id`) The ID of the project the cluster is associated with.
63
+ :param pulumi.Input[str] region: `region`) The region in which the cluster should be created.
64
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the Kubernetes cluster.
65
+ :param pulumi.Input[str] type: The type of Kubernetes cluster. Possible values are:
66
+
67
+ - for mutualized clusters: `kapsule` or `multicloud`
68
+
69
+ - for dedicated Kapsule clusters: `kapsule-dedicated-4`, `kapsule-dedicated-8` or `kapsule-dedicated-16`.
70
+
71
+ - for dedicated Kosmos clusters: `multicloud-dedicated-4`, `multicloud-dedicated-8` or `multicloud-dedicated-16`.
72
+ """
73
+ pulumi.set(__self__, "cni", cni)
74
+ pulumi.set(__self__, "delete_additional_resources", delete_additional_resources)
75
+ pulumi.set(__self__, "version", version)
76
+ if admission_plugins is not None:
77
+ pulumi.set(__self__, "admission_plugins", admission_plugins)
78
+ if apiserver_cert_sans is not None:
79
+ pulumi.set(__self__, "apiserver_cert_sans", apiserver_cert_sans)
80
+ if auto_upgrade is not None:
81
+ pulumi.set(__self__, "auto_upgrade", auto_upgrade)
82
+ if autoscaler_config is not None:
83
+ pulumi.set(__self__, "autoscaler_config", autoscaler_config)
84
+ if description is not None:
85
+ pulumi.set(__self__, "description", description)
86
+ if feature_gates is not None:
87
+ pulumi.set(__self__, "feature_gates", feature_gates)
88
+ if name is not None:
89
+ pulumi.set(__self__, "name", name)
90
+ if open_id_connect_config is not None:
91
+ pulumi.set(__self__, "open_id_connect_config", open_id_connect_config)
92
+ if private_network_id is not None:
93
+ pulumi.set(__self__, "private_network_id", private_network_id)
94
+ if project_id is not None:
95
+ pulumi.set(__self__, "project_id", project_id)
96
+ if region is not None:
97
+ pulumi.set(__self__, "region", region)
98
+ if tags is not None:
99
+ pulumi.set(__self__, "tags", tags)
100
+ if type is not None:
101
+ pulumi.set(__self__, "type", type)
102
+
103
+ @property
104
+ @pulumi.getter
105
+ def cni(self) -> pulumi.Input[str]:
106
+ """
107
+ The Container Network Interface (CNI) for the Kubernetes cluster.
108
+ > **Important:** Updates to this field will recreate a new resource.
109
+ """
110
+ return pulumi.get(self, "cni")
111
+
112
+ @cni.setter
113
+ def cni(self, value: pulumi.Input[str]):
114
+ pulumi.set(self, "cni", value)
115
+
116
+ @property
117
+ @pulumi.getter(name="deleteAdditionalResources")
118
+ def delete_additional_resources(self) -> pulumi.Input[bool]:
119
+ """
120
+ Delete additional resources like block volumes, load-balancers and the cluster's private network (if empty) that were created in Kubernetes on cluster deletion.
121
+ > **Important:** Setting this field to `true` means that you will lose all your cluster data and network configuration when you delete your cluster.
122
+ If you prefer keeping it, you should instead set it as `false`.
123
+ """
124
+ return pulumi.get(self, "delete_additional_resources")
125
+
126
+ @delete_additional_resources.setter
127
+ def delete_additional_resources(self, value: pulumi.Input[bool]):
128
+ pulumi.set(self, "delete_additional_resources", value)
129
+
130
+ @property
131
+ @pulumi.getter
132
+ def version(self) -> pulumi.Input[str]:
133
+ """
134
+ The version of the Kubernetes cluster.
135
+ """
136
+ return pulumi.get(self, "version")
137
+
138
+ @version.setter
139
+ def version(self, value: pulumi.Input[str]):
140
+ pulumi.set(self, "version", value)
141
+
142
+ @property
143
+ @pulumi.getter(name="admissionPlugins")
144
+ def admission_plugins(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
145
+ """
146
+ The list of [admission plugins](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/) to enable on the cluster.
147
+ """
148
+ return pulumi.get(self, "admission_plugins")
149
+
150
+ @admission_plugins.setter
151
+ def admission_plugins(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
152
+ pulumi.set(self, "admission_plugins", value)
153
+
154
+ @property
155
+ @pulumi.getter(name="apiserverCertSans")
156
+ def apiserver_cert_sans(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
157
+ """
158
+ Additional Subject Alternative Names for the Kubernetes API server certificate
159
+ """
160
+ return pulumi.get(self, "apiserver_cert_sans")
161
+
162
+ @apiserver_cert_sans.setter
163
+ def apiserver_cert_sans(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
164
+ pulumi.set(self, "apiserver_cert_sans", value)
165
+
166
+ @property
167
+ @pulumi.getter(name="autoUpgrade")
168
+ def auto_upgrade(self) -> Optional[pulumi.Input['KubernetesClusterAutoUpgradeArgs']]:
169
+ """
170
+ The auto upgrade configuration.
171
+ """
172
+ return pulumi.get(self, "auto_upgrade")
173
+
174
+ @auto_upgrade.setter
175
+ def auto_upgrade(self, value: Optional[pulumi.Input['KubernetesClusterAutoUpgradeArgs']]):
176
+ pulumi.set(self, "auto_upgrade", value)
177
+
178
+ @property
179
+ @pulumi.getter(name="autoscalerConfig")
180
+ def autoscaler_config(self) -> Optional[pulumi.Input['KubernetesClusterAutoscalerConfigArgs']]:
181
+ """
182
+ The configuration options for the [Kubernetes cluster autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler).
183
+ """
184
+ return pulumi.get(self, "autoscaler_config")
185
+
186
+ @autoscaler_config.setter
187
+ def autoscaler_config(self, value: Optional[pulumi.Input['KubernetesClusterAutoscalerConfigArgs']]):
188
+ pulumi.set(self, "autoscaler_config", value)
189
+
190
+ @property
191
+ @pulumi.getter
192
+ def description(self) -> Optional[pulumi.Input[str]]:
193
+ """
194
+ A description for the Kubernetes cluster.
195
+ """
196
+ return pulumi.get(self, "description")
197
+
198
+ @description.setter
199
+ def description(self, value: Optional[pulumi.Input[str]]):
200
+ pulumi.set(self, "description", value)
201
+
202
+ @property
203
+ @pulumi.getter(name="featureGates")
204
+ def feature_gates(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
205
+ """
206
+ The list of [feature gates](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/) to enable on the cluster.
207
+ """
208
+ return pulumi.get(self, "feature_gates")
209
+
210
+ @feature_gates.setter
211
+ def feature_gates(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
212
+ pulumi.set(self, "feature_gates", value)
213
+
214
+ @property
215
+ @pulumi.getter
216
+ def name(self) -> Optional[pulumi.Input[str]]:
217
+ """
218
+ The name for the Kubernetes cluster.
219
+ """
220
+ return pulumi.get(self, "name")
221
+
222
+ @name.setter
223
+ def name(self, value: Optional[pulumi.Input[str]]):
224
+ pulumi.set(self, "name", value)
225
+
226
+ @property
227
+ @pulumi.getter(name="openIdConnectConfig")
228
+ def open_id_connect_config(self) -> Optional[pulumi.Input['KubernetesClusterOpenIdConnectConfigArgs']]:
229
+ """
230
+ The OpenID Connect configuration of the cluster
231
+ """
232
+ return pulumi.get(self, "open_id_connect_config")
233
+
234
+ @open_id_connect_config.setter
235
+ def open_id_connect_config(self, value: Optional[pulumi.Input['KubernetesClusterOpenIdConnectConfigArgs']]):
236
+ pulumi.set(self, "open_id_connect_config", value)
237
+
238
+ @property
239
+ @pulumi.getter(name="privateNetworkId")
240
+ def private_network_id(self) -> Optional[pulumi.Input[str]]:
241
+ """
242
+ The ID of the private network of the cluster.
243
+
244
+ > **Important:** Changes to this field will recreate a new resource.
245
+
246
+ > **Important:** Private Networks are now mandatory with Kapsule Clusters. If you have a legacy cluster (no `private_network_id` set),
247
+ you can still set it now. In this case it will not destroy and recreate your cluster but migrate it to the Private Network.
248
+ """
249
+ return pulumi.get(self, "private_network_id")
250
+
251
+ @private_network_id.setter
252
+ def private_network_id(self, value: Optional[pulumi.Input[str]]):
253
+ pulumi.set(self, "private_network_id", value)
254
+
255
+ @property
256
+ @pulumi.getter(name="projectId")
257
+ def project_id(self) -> Optional[pulumi.Input[str]]:
258
+ """
259
+ `project_id`) The ID of the project the cluster is associated with.
260
+ """
261
+ return pulumi.get(self, "project_id")
262
+
263
+ @project_id.setter
264
+ def project_id(self, value: Optional[pulumi.Input[str]]):
265
+ pulumi.set(self, "project_id", value)
266
+
267
+ @property
268
+ @pulumi.getter
269
+ def region(self) -> Optional[pulumi.Input[str]]:
270
+ """
271
+ `region`) The region in which the cluster should be created.
272
+ """
273
+ return pulumi.get(self, "region")
274
+
275
+ @region.setter
276
+ def region(self, value: Optional[pulumi.Input[str]]):
277
+ pulumi.set(self, "region", value)
278
+
279
+ @property
280
+ @pulumi.getter
281
+ def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
282
+ """
283
+ The tags associated with the Kubernetes cluster.
284
+ """
285
+ return pulumi.get(self, "tags")
286
+
287
+ @tags.setter
288
+ def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
289
+ pulumi.set(self, "tags", value)
290
+
291
+ @property
292
+ @pulumi.getter
293
+ def type(self) -> Optional[pulumi.Input[str]]:
294
+ """
295
+ The type of Kubernetes cluster. Possible values are:
296
+
297
+ - for mutualized clusters: `kapsule` or `multicloud`
298
+
299
+ - for dedicated Kapsule clusters: `kapsule-dedicated-4`, `kapsule-dedicated-8` or `kapsule-dedicated-16`.
300
+
301
+ - for dedicated Kosmos clusters: `multicloud-dedicated-4`, `multicloud-dedicated-8` or `multicloud-dedicated-16`.
302
+ """
303
+ return pulumi.get(self, "type")
304
+
305
+ @type.setter
306
+ def type(self, value: Optional[pulumi.Input[str]]):
307
+ pulumi.set(self, "type", value)
308
+
309
+
310
+ @pulumi.input_type
311
+ class _KubernetesClusterState:
312
+ def __init__(__self__, *,
313
+ admission_plugins: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
314
+ apiserver_cert_sans: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
315
+ apiserver_url: Optional[pulumi.Input[str]] = None,
316
+ auto_upgrade: Optional[pulumi.Input['KubernetesClusterAutoUpgradeArgs']] = None,
317
+ autoscaler_config: Optional[pulumi.Input['KubernetesClusterAutoscalerConfigArgs']] = None,
318
+ cni: Optional[pulumi.Input[str]] = None,
319
+ created_at: Optional[pulumi.Input[str]] = None,
320
+ delete_additional_resources: Optional[pulumi.Input[bool]] = None,
321
+ description: Optional[pulumi.Input[str]] = None,
322
+ feature_gates: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
323
+ kubeconfigs: Optional[pulumi.Input[Sequence[pulumi.Input['KubernetesClusterKubeconfigArgs']]]] = None,
324
+ name: Optional[pulumi.Input[str]] = None,
325
+ open_id_connect_config: Optional[pulumi.Input['KubernetesClusterOpenIdConnectConfigArgs']] = None,
326
+ organization_id: Optional[pulumi.Input[str]] = None,
327
+ private_network_id: Optional[pulumi.Input[str]] = None,
328
+ project_id: Optional[pulumi.Input[str]] = None,
329
+ region: Optional[pulumi.Input[str]] = None,
330
+ status: Optional[pulumi.Input[str]] = None,
331
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
332
+ type: Optional[pulumi.Input[str]] = None,
333
+ updated_at: Optional[pulumi.Input[str]] = None,
334
+ upgrade_available: Optional[pulumi.Input[bool]] = None,
335
+ version: Optional[pulumi.Input[str]] = None,
336
+ wildcard_dns: Optional[pulumi.Input[str]] = None):
337
+ """
338
+ Input properties used for looking up and filtering KubernetesCluster resources.
339
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] admission_plugins: The list of [admission plugins](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/) to enable on the cluster.
340
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] apiserver_cert_sans: Additional Subject Alternative Names for the Kubernetes API server certificate
341
+ :param pulumi.Input[str] apiserver_url: The URL of the Kubernetes API server.
342
+ :param pulumi.Input['KubernetesClusterAutoUpgradeArgs'] auto_upgrade: The auto upgrade configuration.
343
+ :param pulumi.Input['KubernetesClusterAutoscalerConfigArgs'] autoscaler_config: The configuration options for the [Kubernetes cluster autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler).
344
+ :param pulumi.Input[str] cni: The Container Network Interface (CNI) for the Kubernetes cluster.
345
+ > **Important:** Updates to this field will recreate a new resource.
346
+ :param pulumi.Input[str] created_at: The creation date of the cluster.
347
+ :param pulumi.Input[bool] delete_additional_resources: Delete additional resources like block volumes, load-balancers and the cluster's private network (if empty) that were created in Kubernetes on cluster deletion.
348
+ > **Important:** Setting this field to `true` means that you will lose all your cluster data and network configuration when you delete your cluster.
349
+ If you prefer keeping it, you should instead set it as `false`.
350
+ :param pulumi.Input[str] description: A description for the Kubernetes cluster.
351
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] feature_gates: The list of [feature gates](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/) to enable on the cluster.
352
+ :param pulumi.Input[Sequence[pulumi.Input['KubernetesClusterKubeconfigArgs']]] kubeconfigs: The kubeconfig configuration file of the Kubernetes cluster
353
+ :param pulumi.Input[str] name: The name for the Kubernetes cluster.
354
+ :param pulumi.Input['KubernetesClusterOpenIdConnectConfigArgs'] open_id_connect_config: The OpenID Connect configuration of the cluster
355
+ :param pulumi.Input[str] organization_id: The organization ID the cluster is associated with.
356
+ :param pulumi.Input[str] private_network_id: The ID of the private network of the cluster.
357
+
358
+ > **Important:** Changes to this field will recreate a new resource.
359
+
360
+ > **Important:** Private Networks are now mandatory with Kapsule Clusters. If you have a legacy cluster (no `private_network_id` set),
361
+ you can still set it now. In this case it will not destroy and recreate your cluster but migrate it to the Private Network.
362
+ :param pulumi.Input[str] project_id: `project_id`) The ID of the project the cluster is associated with.
363
+ :param pulumi.Input[str] region: `region`) The region in which the cluster should be created.
364
+ :param pulumi.Input[str] status: The status of the Kubernetes cluster.
365
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the Kubernetes cluster.
366
+ :param pulumi.Input[str] type: The type of Kubernetes cluster. Possible values are:
367
+
368
+ - for mutualized clusters: `kapsule` or `multicloud`
369
+
370
+ - for dedicated Kapsule clusters: `kapsule-dedicated-4`, `kapsule-dedicated-8` or `kapsule-dedicated-16`.
371
+
372
+ - for dedicated Kosmos clusters: `multicloud-dedicated-4`, `multicloud-dedicated-8` or `multicloud-dedicated-16`.
373
+ :param pulumi.Input[str] updated_at: The last update date of the cluster.
374
+ :param pulumi.Input[bool] upgrade_available: Set to `true` if a newer Kubernetes version is available.
375
+ :param pulumi.Input[str] version: The version of the Kubernetes cluster.
376
+ :param pulumi.Input[str] wildcard_dns: The DNS wildcard that points to all ready nodes.
377
+ """
378
+ if admission_plugins is not None:
379
+ pulumi.set(__self__, "admission_plugins", admission_plugins)
380
+ if apiserver_cert_sans is not None:
381
+ pulumi.set(__self__, "apiserver_cert_sans", apiserver_cert_sans)
382
+ if apiserver_url is not None:
383
+ pulumi.set(__self__, "apiserver_url", apiserver_url)
384
+ if auto_upgrade is not None:
385
+ pulumi.set(__self__, "auto_upgrade", auto_upgrade)
386
+ if autoscaler_config is not None:
387
+ pulumi.set(__self__, "autoscaler_config", autoscaler_config)
388
+ if cni is not None:
389
+ pulumi.set(__self__, "cni", cni)
390
+ if created_at is not None:
391
+ pulumi.set(__self__, "created_at", created_at)
392
+ if delete_additional_resources is not None:
393
+ pulumi.set(__self__, "delete_additional_resources", delete_additional_resources)
394
+ if description is not None:
395
+ pulumi.set(__self__, "description", description)
396
+ if feature_gates is not None:
397
+ pulumi.set(__self__, "feature_gates", feature_gates)
398
+ if kubeconfigs is not None:
399
+ pulumi.set(__self__, "kubeconfigs", kubeconfigs)
400
+ if name is not None:
401
+ pulumi.set(__self__, "name", name)
402
+ if open_id_connect_config is not None:
403
+ pulumi.set(__self__, "open_id_connect_config", open_id_connect_config)
404
+ if organization_id is not None:
405
+ pulumi.set(__self__, "organization_id", organization_id)
406
+ if private_network_id is not None:
407
+ pulumi.set(__self__, "private_network_id", private_network_id)
408
+ if project_id is not None:
409
+ pulumi.set(__self__, "project_id", project_id)
410
+ if region is not None:
411
+ pulumi.set(__self__, "region", region)
412
+ if status is not None:
413
+ pulumi.set(__self__, "status", status)
414
+ if tags is not None:
415
+ pulumi.set(__self__, "tags", tags)
416
+ if type is not None:
417
+ pulumi.set(__self__, "type", type)
418
+ if updated_at is not None:
419
+ pulumi.set(__self__, "updated_at", updated_at)
420
+ if upgrade_available is not None:
421
+ pulumi.set(__self__, "upgrade_available", upgrade_available)
422
+ if version is not None:
423
+ pulumi.set(__self__, "version", version)
424
+ if wildcard_dns is not None:
425
+ pulumi.set(__self__, "wildcard_dns", wildcard_dns)
426
+
427
+ @property
428
+ @pulumi.getter(name="admissionPlugins")
429
+ def admission_plugins(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
430
+ """
431
+ The list of [admission plugins](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/) to enable on the cluster.
432
+ """
433
+ return pulumi.get(self, "admission_plugins")
434
+
435
+ @admission_plugins.setter
436
+ def admission_plugins(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
437
+ pulumi.set(self, "admission_plugins", value)
438
+
439
+ @property
440
+ @pulumi.getter(name="apiserverCertSans")
441
+ def apiserver_cert_sans(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
442
+ """
443
+ Additional Subject Alternative Names for the Kubernetes API server certificate
444
+ """
445
+ return pulumi.get(self, "apiserver_cert_sans")
446
+
447
+ @apiserver_cert_sans.setter
448
+ def apiserver_cert_sans(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
449
+ pulumi.set(self, "apiserver_cert_sans", value)
450
+
451
+ @property
452
+ @pulumi.getter(name="apiserverUrl")
453
+ def apiserver_url(self) -> Optional[pulumi.Input[str]]:
454
+ """
455
+ The URL of the Kubernetes API server.
456
+ """
457
+ return pulumi.get(self, "apiserver_url")
458
+
459
+ @apiserver_url.setter
460
+ def apiserver_url(self, value: Optional[pulumi.Input[str]]):
461
+ pulumi.set(self, "apiserver_url", value)
462
+
463
+ @property
464
+ @pulumi.getter(name="autoUpgrade")
465
+ def auto_upgrade(self) -> Optional[pulumi.Input['KubernetesClusterAutoUpgradeArgs']]:
466
+ """
467
+ The auto upgrade configuration.
468
+ """
469
+ return pulumi.get(self, "auto_upgrade")
470
+
471
+ @auto_upgrade.setter
472
+ def auto_upgrade(self, value: Optional[pulumi.Input['KubernetesClusterAutoUpgradeArgs']]):
473
+ pulumi.set(self, "auto_upgrade", value)
474
+
475
+ @property
476
+ @pulumi.getter(name="autoscalerConfig")
477
+ def autoscaler_config(self) -> Optional[pulumi.Input['KubernetesClusterAutoscalerConfigArgs']]:
478
+ """
479
+ The configuration options for the [Kubernetes cluster autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler).
480
+ """
481
+ return pulumi.get(self, "autoscaler_config")
482
+
483
+ @autoscaler_config.setter
484
+ def autoscaler_config(self, value: Optional[pulumi.Input['KubernetesClusterAutoscalerConfigArgs']]):
485
+ pulumi.set(self, "autoscaler_config", value)
486
+
487
+ @property
488
+ @pulumi.getter
489
+ def cni(self) -> Optional[pulumi.Input[str]]:
490
+ """
491
+ The Container Network Interface (CNI) for the Kubernetes cluster.
492
+ > **Important:** Updates to this field will recreate a new resource.
493
+ """
494
+ return pulumi.get(self, "cni")
495
+
496
+ @cni.setter
497
+ def cni(self, value: Optional[pulumi.Input[str]]):
498
+ pulumi.set(self, "cni", value)
499
+
500
+ @property
501
+ @pulumi.getter(name="createdAt")
502
+ def created_at(self) -> Optional[pulumi.Input[str]]:
503
+ """
504
+ The creation date of the cluster.
505
+ """
506
+ return pulumi.get(self, "created_at")
507
+
508
+ @created_at.setter
509
+ def created_at(self, value: Optional[pulumi.Input[str]]):
510
+ pulumi.set(self, "created_at", value)
511
+
512
+ @property
513
+ @pulumi.getter(name="deleteAdditionalResources")
514
+ def delete_additional_resources(self) -> Optional[pulumi.Input[bool]]:
515
+ """
516
+ Delete additional resources like block volumes, load-balancers and the cluster's private network (if empty) that were created in Kubernetes on cluster deletion.
517
+ > **Important:** Setting this field to `true` means that you will lose all your cluster data and network configuration when you delete your cluster.
518
+ If you prefer keeping it, you should instead set it as `false`.
519
+ """
520
+ return pulumi.get(self, "delete_additional_resources")
521
+
522
+ @delete_additional_resources.setter
523
+ def delete_additional_resources(self, value: Optional[pulumi.Input[bool]]):
524
+ pulumi.set(self, "delete_additional_resources", value)
525
+
526
+ @property
527
+ @pulumi.getter
528
+ def description(self) -> Optional[pulumi.Input[str]]:
529
+ """
530
+ A description for the Kubernetes cluster.
531
+ """
532
+ return pulumi.get(self, "description")
533
+
534
+ @description.setter
535
+ def description(self, value: Optional[pulumi.Input[str]]):
536
+ pulumi.set(self, "description", value)
537
+
538
+ @property
539
+ @pulumi.getter(name="featureGates")
540
+ def feature_gates(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
541
+ """
542
+ The list of [feature gates](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/) to enable on the cluster.
543
+ """
544
+ return pulumi.get(self, "feature_gates")
545
+
546
+ @feature_gates.setter
547
+ def feature_gates(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
548
+ pulumi.set(self, "feature_gates", value)
549
+
550
+ @property
551
+ @pulumi.getter
552
+ def kubeconfigs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['KubernetesClusterKubeconfigArgs']]]]:
553
+ """
554
+ The kubeconfig configuration file of the Kubernetes cluster
555
+ """
556
+ return pulumi.get(self, "kubeconfigs")
557
+
558
+ @kubeconfigs.setter
559
+ def kubeconfigs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['KubernetesClusterKubeconfigArgs']]]]):
560
+ pulumi.set(self, "kubeconfigs", value)
561
+
562
+ @property
563
+ @pulumi.getter
564
+ def name(self) -> Optional[pulumi.Input[str]]:
565
+ """
566
+ The name for the Kubernetes cluster.
567
+ """
568
+ return pulumi.get(self, "name")
569
+
570
+ @name.setter
571
+ def name(self, value: Optional[pulumi.Input[str]]):
572
+ pulumi.set(self, "name", value)
573
+
574
+ @property
575
+ @pulumi.getter(name="openIdConnectConfig")
576
+ def open_id_connect_config(self) -> Optional[pulumi.Input['KubernetesClusterOpenIdConnectConfigArgs']]:
577
+ """
578
+ The OpenID Connect configuration of the cluster
579
+ """
580
+ return pulumi.get(self, "open_id_connect_config")
581
+
582
+ @open_id_connect_config.setter
583
+ def open_id_connect_config(self, value: Optional[pulumi.Input['KubernetesClusterOpenIdConnectConfigArgs']]):
584
+ pulumi.set(self, "open_id_connect_config", value)
585
+
586
+ @property
587
+ @pulumi.getter(name="organizationId")
588
+ def organization_id(self) -> Optional[pulumi.Input[str]]:
589
+ """
590
+ The organization ID the cluster is associated with.
591
+ """
592
+ return pulumi.get(self, "organization_id")
593
+
594
+ @organization_id.setter
595
+ def organization_id(self, value: Optional[pulumi.Input[str]]):
596
+ pulumi.set(self, "organization_id", value)
597
+
598
+ @property
599
+ @pulumi.getter(name="privateNetworkId")
600
+ def private_network_id(self) -> Optional[pulumi.Input[str]]:
601
+ """
602
+ The ID of the private network of the cluster.
603
+
604
+ > **Important:** Changes to this field will recreate a new resource.
605
+
606
+ > **Important:** Private Networks are now mandatory with Kapsule Clusters. If you have a legacy cluster (no `private_network_id` set),
607
+ you can still set it now. In this case it will not destroy and recreate your cluster but migrate it to the Private Network.
608
+ """
609
+ return pulumi.get(self, "private_network_id")
610
+
611
+ @private_network_id.setter
612
+ def private_network_id(self, value: Optional[pulumi.Input[str]]):
613
+ pulumi.set(self, "private_network_id", value)
614
+
615
+ @property
616
+ @pulumi.getter(name="projectId")
617
+ def project_id(self) -> Optional[pulumi.Input[str]]:
618
+ """
619
+ `project_id`) The ID of the project the cluster is associated with.
620
+ """
621
+ return pulumi.get(self, "project_id")
622
+
623
+ @project_id.setter
624
+ def project_id(self, value: Optional[pulumi.Input[str]]):
625
+ pulumi.set(self, "project_id", value)
626
+
627
+ @property
628
+ @pulumi.getter
629
+ def region(self) -> Optional[pulumi.Input[str]]:
630
+ """
631
+ `region`) The region in which the cluster should be created.
632
+ """
633
+ return pulumi.get(self, "region")
634
+
635
+ @region.setter
636
+ def region(self, value: Optional[pulumi.Input[str]]):
637
+ pulumi.set(self, "region", value)
638
+
639
+ @property
640
+ @pulumi.getter
641
+ def status(self) -> Optional[pulumi.Input[str]]:
642
+ """
643
+ The status of the Kubernetes cluster.
644
+ """
645
+ return pulumi.get(self, "status")
646
+
647
+ @status.setter
648
+ def status(self, value: Optional[pulumi.Input[str]]):
649
+ pulumi.set(self, "status", value)
650
+
651
+ @property
652
+ @pulumi.getter
653
+ def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
654
+ """
655
+ The tags associated with the Kubernetes cluster.
656
+ """
657
+ return pulumi.get(self, "tags")
658
+
659
+ @tags.setter
660
+ def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
661
+ pulumi.set(self, "tags", value)
662
+
663
+ @property
664
+ @pulumi.getter
665
+ def type(self) -> Optional[pulumi.Input[str]]:
666
+ """
667
+ The type of Kubernetes cluster. Possible values are:
668
+
669
+ - for mutualized clusters: `kapsule` or `multicloud`
670
+
671
+ - for dedicated Kapsule clusters: `kapsule-dedicated-4`, `kapsule-dedicated-8` or `kapsule-dedicated-16`.
672
+
673
+ - for dedicated Kosmos clusters: `multicloud-dedicated-4`, `multicloud-dedicated-8` or `multicloud-dedicated-16`.
674
+ """
675
+ return pulumi.get(self, "type")
676
+
677
+ @type.setter
678
+ def type(self, value: Optional[pulumi.Input[str]]):
679
+ pulumi.set(self, "type", value)
680
+
681
+ @property
682
+ @pulumi.getter(name="updatedAt")
683
+ def updated_at(self) -> Optional[pulumi.Input[str]]:
684
+ """
685
+ The last update date of the cluster.
686
+ """
687
+ return pulumi.get(self, "updated_at")
688
+
689
+ @updated_at.setter
690
+ def updated_at(self, value: Optional[pulumi.Input[str]]):
691
+ pulumi.set(self, "updated_at", value)
692
+
693
+ @property
694
+ @pulumi.getter(name="upgradeAvailable")
695
+ def upgrade_available(self) -> Optional[pulumi.Input[bool]]:
696
+ """
697
+ Set to `true` if a newer Kubernetes version is available.
698
+ """
699
+ return pulumi.get(self, "upgrade_available")
700
+
701
+ @upgrade_available.setter
702
+ def upgrade_available(self, value: Optional[pulumi.Input[bool]]):
703
+ pulumi.set(self, "upgrade_available", value)
704
+
705
+ @property
706
+ @pulumi.getter
707
+ def version(self) -> Optional[pulumi.Input[str]]:
708
+ """
709
+ The version of the Kubernetes cluster.
710
+ """
711
+ return pulumi.get(self, "version")
712
+
713
+ @version.setter
714
+ def version(self, value: Optional[pulumi.Input[str]]):
715
+ pulumi.set(self, "version", value)
716
+
717
+ @property
718
+ @pulumi.getter(name="wildcardDns")
719
+ def wildcard_dns(self) -> Optional[pulumi.Input[str]]:
720
+ """
721
+ The DNS wildcard that points to all ready nodes.
722
+ """
723
+ return pulumi.get(self, "wildcard_dns")
724
+
725
+ @wildcard_dns.setter
726
+ def wildcard_dns(self, value: Optional[pulumi.Input[str]]):
727
+ pulumi.set(self, "wildcard_dns", value)
728
+
729
+
730
+ class KubernetesCluster(pulumi.CustomResource):
731
+ @overload
732
+ def __init__(__self__,
733
+ resource_name: str,
734
+ opts: Optional[pulumi.ResourceOptions] = None,
735
+ admission_plugins: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
736
+ apiserver_cert_sans: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
737
+ auto_upgrade: Optional[pulumi.Input[Union['KubernetesClusterAutoUpgradeArgs', 'KubernetesClusterAutoUpgradeArgsDict']]] = None,
738
+ autoscaler_config: Optional[pulumi.Input[Union['KubernetesClusterAutoscalerConfigArgs', 'KubernetesClusterAutoscalerConfigArgsDict']]] = None,
739
+ cni: Optional[pulumi.Input[str]] = None,
740
+ delete_additional_resources: Optional[pulumi.Input[bool]] = None,
741
+ description: Optional[pulumi.Input[str]] = None,
742
+ feature_gates: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
743
+ name: Optional[pulumi.Input[str]] = None,
744
+ open_id_connect_config: Optional[pulumi.Input[Union['KubernetesClusterOpenIdConnectConfigArgs', 'KubernetesClusterOpenIdConnectConfigArgsDict']]] = None,
745
+ private_network_id: Optional[pulumi.Input[str]] = None,
746
+ project_id: Optional[pulumi.Input[str]] = None,
747
+ region: Optional[pulumi.Input[str]] = None,
748
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
749
+ type: Optional[pulumi.Input[str]] = None,
750
+ version: Optional[pulumi.Input[str]] = None,
751
+ __props__=None):
752
+ """
753
+ Creates and manages Scaleway Kubernetes clusters. For more information, see [the documentation](https://www.scaleway.com/en/developers/api/kubernetes/).
754
+
755
+ ## Example Usage
756
+
757
+ ### Basic
758
+
759
+ ```python
760
+ import pulumi
761
+ import pulumiverse_scaleway as scaleway
762
+
763
+ pn = scaleway.VpcPrivateNetwork("pn")
764
+ cluster = scaleway.KubernetesCluster("cluster",
765
+ name="tf-cluster",
766
+ version="1.29.1",
767
+ cni="cilium",
768
+ private_network_id=pn.id,
769
+ delete_additional_resources=False)
770
+ pool = scaleway.KubernetesNodePool("pool",
771
+ cluster_id=cluster.id,
772
+ name="tf-pool",
773
+ node_type="DEV1-M",
774
+ size=1)
775
+ ```
776
+
777
+ ### Multicloud
778
+
779
+ ```python
780
+ import pulumi
781
+ import pulumiverse_scaleway as scaleway
782
+
783
+ cluster = scaleway.KubernetesCluster("cluster",
784
+ name="tf-cluster",
785
+ type="multicloud",
786
+ version="1.29.1",
787
+ cni="kilo",
788
+ delete_additional_resources=False)
789
+ pool = scaleway.KubernetesNodePool("pool",
790
+ cluster_id=cluster.id,
791
+ name="tf-pool",
792
+ node_type="external",
793
+ size=0,
794
+ min_size=0)
795
+ ```
796
+
797
+ For a detailed example of how to add or run Elastic Metal servers instead of Instances on your cluster, please refer to this guide.
798
+
799
+ ### With additional configuration
800
+
801
+ ```python
802
+ import pulumi
803
+ import pulumiverse_scaleway as scaleway
804
+
805
+ pn = scaleway.VpcPrivateNetwork("pn")
806
+ cluster = scaleway.KubernetesCluster("cluster",
807
+ name="tf-cluster",
808
+ description="cluster made in terraform",
809
+ version="1.29.1",
810
+ cni="calico",
811
+ tags=["terraform"],
812
+ private_network_id=pn.id,
813
+ delete_additional_resources=False,
814
+ autoscaler_config={
815
+ "disable_scale_down": False,
816
+ "scale_down_delay_after_add": "5m",
817
+ "estimator": "binpacking",
818
+ "expander": "random",
819
+ "ignore_daemonsets_utilization": True,
820
+ "balance_similar_node_groups": True,
821
+ "expendable_pods_priority_cutoff": -5,
822
+ })
823
+ pool = scaleway.KubernetesNodePool("pool",
824
+ cluster_id=cluster.id,
825
+ name="tf-pool",
826
+ node_type="DEV1-M",
827
+ size=3,
828
+ autoscaling=True,
829
+ autohealing=True,
830
+ min_size=1,
831
+ max_size=5)
832
+ ```
833
+
834
+ ### With the kubernetes provider
835
+
836
+ ```python
837
+ import pulumi
838
+ import pulumi_null as null
839
+ import pulumiverse_scaleway as scaleway
840
+
841
+ pn = scaleway.VpcPrivateNetwork("pn")
842
+ cluster = scaleway.KubernetesCluster("cluster",
843
+ name="tf-cluster",
844
+ version="1.29.1",
845
+ cni="cilium",
846
+ private_network_id=pn.id,
847
+ delete_additional_resources=False)
848
+ pool = scaleway.KubernetesNodePool("pool",
849
+ cluster_id=cluster.id,
850
+ name="tf-pool",
851
+ node_type="DEV1-M",
852
+ size=1)
853
+ kubeconfig = null.Resource("kubeconfig", triggers={
854
+ "host": cluster.kubeconfigs[0].host,
855
+ "token": cluster.kubeconfigs[0].token,
856
+ "cluster_ca_certificate": cluster.kubeconfigs[0].cluster_ca_certificate,
857
+ },
858
+ opts = pulumi.ResourceOptions(depends_on=[pool]))
859
+ ```
860
+
861
+ The `null_resource` is needed because when the cluster is created, it's status is `pool_required`, but the kubeconfig can already be downloaded.
862
+ It leads the `kubernetes` provider to start creating its objects, but the DNS entry for the Kubernetes master is not yet ready, that's why it's needed to wait for at least a pool.
863
+
864
+ ### With the Helm provider
865
+
866
+ ```python
867
+ import pulumi
868
+ import pulumi_helm as helm
869
+ import pulumi_null as null
870
+ import pulumiverse_scaleway as scaleway
871
+
872
+ pn = scaleway.VpcPrivateNetwork("pn")
873
+ cluster = scaleway.KubernetesCluster("cluster",
874
+ name="tf-cluster",
875
+ version="1.29.1",
876
+ cni="cilium",
877
+ delete_additional_resources=False,
878
+ private_network_id=pn.id)
879
+ pool = scaleway.KubernetesNodePool("pool",
880
+ cluster_id=cluster.id,
881
+ name="tf-pool",
882
+ node_type="DEV1-M",
883
+ size=1)
884
+ kubeconfig = null.Resource("kubeconfig", triggers={
885
+ "host": cluster.kubeconfigs[0].host,
886
+ "token": cluster.kubeconfigs[0].token,
887
+ "cluster_ca_certificate": cluster.kubeconfigs[0].cluster_ca_certificate,
888
+ },
889
+ opts = pulumi.ResourceOptions(depends_on=[pool]))
890
+ nginx_ip = scaleway.LoadbalancerIp("nginx_ip",
891
+ zone="fr-par-1",
892
+ project_id=cluster.project_id)
893
+ nginx_ingress = helm.index.Release("nginx_ingress",
894
+ name=nginx-ingress,
895
+ namespace=kube-system,
896
+ repository=https://kubernetes.github.io/ingress-nginx,
897
+ chart=ingress-nginx,
898
+ set=[
899
+ {
900
+ name: controller.service.loadBalancerIP,
901
+ value: nginx_ip.ip_address,
902
+ },
903
+ {
904
+ name: controller.config.use-proxy-protocol,
905
+ value: true,
906
+ },
907
+ {
908
+ name: controller.service.annotations.service\\.beta\\.kubernetes\\.io/scw-loadbalancer-proxy-protocol-v2,
909
+ value: true,
910
+ },
911
+ {
912
+ name: controller.service.annotations.service\\.beta\\.kubernetes\\.io/scw-loadbalancer-zone,
913
+ value: nginx_ip.zone,
914
+ },
915
+ {
916
+ name: controller.service.externalTrafficPolicy,
917
+ value: Local,
918
+ },
919
+ ])
920
+ ```
921
+
922
+ ## Import
923
+
924
+ Kubernetes clusters can be imported using the `{region}/{id}`, e.g.
925
+
926
+ bash
927
+
928
+ ```sh
929
+ $ pulumi import scaleway:index/kubernetesCluster:KubernetesCluster mycluster fr-par/11111111-1111-1111-1111-111111111111
930
+ ```
931
+
932
+ :param str resource_name: The name of the resource.
933
+ :param pulumi.ResourceOptions opts: Options for the resource.
934
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] admission_plugins: The list of [admission plugins](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/) to enable on the cluster.
935
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] apiserver_cert_sans: Additional Subject Alternative Names for the Kubernetes API server certificate
936
+ :param pulumi.Input[Union['KubernetesClusterAutoUpgradeArgs', 'KubernetesClusterAutoUpgradeArgsDict']] auto_upgrade: The auto upgrade configuration.
937
+ :param pulumi.Input[Union['KubernetesClusterAutoscalerConfigArgs', 'KubernetesClusterAutoscalerConfigArgsDict']] autoscaler_config: The configuration options for the [Kubernetes cluster autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler).
938
+ :param pulumi.Input[str] cni: The Container Network Interface (CNI) for the Kubernetes cluster.
939
+ > **Important:** Updates to this field will recreate a new resource.
940
+ :param pulumi.Input[bool] delete_additional_resources: Delete additional resources like block volumes, load-balancers and the cluster's private network (if empty) that were created in Kubernetes on cluster deletion.
941
+ > **Important:** Setting this field to `true` means that you will lose all your cluster data and network configuration when you delete your cluster.
942
+ If you prefer keeping it, you should instead set it as `false`.
943
+ :param pulumi.Input[str] description: A description for the Kubernetes cluster.
944
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] feature_gates: The list of [feature gates](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/) to enable on the cluster.
945
+ :param pulumi.Input[str] name: The name for the Kubernetes cluster.
946
+ :param pulumi.Input[Union['KubernetesClusterOpenIdConnectConfigArgs', 'KubernetesClusterOpenIdConnectConfigArgsDict']] open_id_connect_config: The OpenID Connect configuration of the cluster
947
+ :param pulumi.Input[str] private_network_id: The ID of the private network of the cluster.
948
+
949
+ > **Important:** Changes to this field will recreate a new resource.
950
+
951
+ > **Important:** Private Networks are now mandatory with Kapsule Clusters. If you have a legacy cluster (no `private_network_id` set),
952
+ you can still set it now. In this case it will not destroy and recreate your cluster but migrate it to the Private Network.
953
+ :param pulumi.Input[str] project_id: `project_id`) The ID of the project the cluster is associated with.
954
+ :param pulumi.Input[str] region: `region`) The region in which the cluster should be created.
955
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the Kubernetes cluster.
956
+ :param pulumi.Input[str] type: The type of Kubernetes cluster. Possible values are:
957
+
958
+ - for mutualized clusters: `kapsule` or `multicloud`
959
+
960
+ - for dedicated Kapsule clusters: `kapsule-dedicated-4`, `kapsule-dedicated-8` or `kapsule-dedicated-16`.
961
+
962
+ - for dedicated Kosmos clusters: `multicloud-dedicated-4`, `multicloud-dedicated-8` or `multicloud-dedicated-16`.
963
+ :param pulumi.Input[str] version: The version of the Kubernetes cluster.
964
+ """
965
+ ...
966
+ @overload
967
+ def __init__(__self__,
968
+ resource_name: str,
969
+ args: KubernetesClusterArgs,
970
+ opts: Optional[pulumi.ResourceOptions] = None):
971
+ """
972
+ Creates and manages Scaleway Kubernetes clusters. For more information, see [the documentation](https://www.scaleway.com/en/developers/api/kubernetes/).
973
+
974
+ ## Example Usage
975
+
976
+ ### Basic
977
+
978
+ ```python
979
+ import pulumi
980
+ import pulumiverse_scaleway as scaleway
981
+
982
+ pn = scaleway.VpcPrivateNetwork("pn")
983
+ cluster = scaleway.KubernetesCluster("cluster",
984
+ name="tf-cluster",
985
+ version="1.29.1",
986
+ cni="cilium",
987
+ private_network_id=pn.id,
988
+ delete_additional_resources=False)
989
+ pool = scaleway.KubernetesNodePool("pool",
990
+ cluster_id=cluster.id,
991
+ name="tf-pool",
992
+ node_type="DEV1-M",
993
+ size=1)
994
+ ```
995
+
996
+ ### Multicloud
997
+
998
+ ```python
999
+ import pulumi
1000
+ import pulumiverse_scaleway as scaleway
1001
+
1002
+ cluster = scaleway.KubernetesCluster("cluster",
1003
+ name="tf-cluster",
1004
+ type="multicloud",
1005
+ version="1.29.1",
1006
+ cni="kilo",
1007
+ delete_additional_resources=False)
1008
+ pool = scaleway.KubernetesNodePool("pool",
1009
+ cluster_id=cluster.id,
1010
+ name="tf-pool",
1011
+ node_type="external",
1012
+ size=0,
1013
+ min_size=0)
1014
+ ```
1015
+
1016
+ For a detailed example of how to add or run Elastic Metal servers instead of Instances on your cluster, please refer to this guide.
1017
+
1018
+ ### With additional configuration
1019
+
1020
+ ```python
1021
+ import pulumi
1022
+ import pulumiverse_scaleway as scaleway
1023
+
1024
+ pn = scaleway.VpcPrivateNetwork("pn")
1025
+ cluster = scaleway.KubernetesCluster("cluster",
1026
+ name="tf-cluster",
1027
+ description="cluster made in terraform",
1028
+ version="1.29.1",
1029
+ cni="calico",
1030
+ tags=["terraform"],
1031
+ private_network_id=pn.id,
1032
+ delete_additional_resources=False,
1033
+ autoscaler_config={
1034
+ "disable_scale_down": False,
1035
+ "scale_down_delay_after_add": "5m",
1036
+ "estimator": "binpacking",
1037
+ "expander": "random",
1038
+ "ignore_daemonsets_utilization": True,
1039
+ "balance_similar_node_groups": True,
1040
+ "expendable_pods_priority_cutoff": -5,
1041
+ })
1042
+ pool = scaleway.KubernetesNodePool("pool",
1043
+ cluster_id=cluster.id,
1044
+ name="tf-pool",
1045
+ node_type="DEV1-M",
1046
+ size=3,
1047
+ autoscaling=True,
1048
+ autohealing=True,
1049
+ min_size=1,
1050
+ max_size=5)
1051
+ ```
1052
+
1053
+ ### With the kubernetes provider
1054
+
1055
+ ```python
1056
+ import pulumi
1057
+ import pulumi_null as null
1058
+ import pulumiverse_scaleway as scaleway
1059
+
1060
+ pn = scaleway.VpcPrivateNetwork("pn")
1061
+ cluster = scaleway.KubernetesCluster("cluster",
1062
+ name="tf-cluster",
1063
+ version="1.29.1",
1064
+ cni="cilium",
1065
+ private_network_id=pn.id,
1066
+ delete_additional_resources=False)
1067
+ pool = scaleway.KubernetesNodePool("pool",
1068
+ cluster_id=cluster.id,
1069
+ name="tf-pool",
1070
+ node_type="DEV1-M",
1071
+ size=1)
1072
+ kubeconfig = null.Resource("kubeconfig", triggers={
1073
+ "host": cluster.kubeconfigs[0].host,
1074
+ "token": cluster.kubeconfigs[0].token,
1075
+ "cluster_ca_certificate": cluster.kubeconfigs[0].cluster_ca_certificate,
1076
+ },
1077
+ opts = pulumi.ResourceOptions(depends_on=[pool]))
1078
+ ```
1079
+
1080
+ The `null_resource` is needed because when the cluster is created, it's status is `pool_required`, but the kubeconfig can already be downloaded.
1081
+ It leads the `kubernetes` provider to start creating its objects, but the DNS entry for the Kubernetes master is not yet ready, that's why it's needed to wait for at least a pool.
1082
+
1083
+ ### With the Helm provider
1084
+
1085
+ ```python
1086
+ import pulumi
1087
+ import pulumi_helm as helm
1088
+ import pulumi_null as null
1089
+ import pulumiverse_scaleway as scaleway
1090
+
1091
+ pn = scaleway.VpcPrivateNetwork("pn")
1092
+ cluster = scaleway.KubernetesCluster("cluster",
1093
+ name="tf-cluster",
1094
+ version="1.29.1",
1095
+ cni="cilium",
1096
+ delete_additional_resources=False,
1097
+ private_network_id=pn.id)
1098
+ pool = scaleway.KubernetesNodePool("pool",
1099
+ cluster_id=cluster.id,
1100
+ name="tf-pool",
1101
+ node_type="DEV1-M",
1102
+ size=1)
1103
+ kubeconfig = null.Resource("kubeconfig", triggers={
1104
+ "host": cluster.kubeconfigs[0].host,
1105
+ "token": cluster.kubeconfigs[0].token,
1106
+ "cluster_ca_certificate": cluster.kubeconfigs[0].cluster_ca_certificate,
1107
+ },
1108
+ opts = pulumi.ResourceOptions(depends_on=[pool]))
1109
+ nginx_ip = scaleway.LoadbalancerIp("nginx_ip",
1110
+ zone="fr-par-1",
1111
+ project_id=cluster.project_id)
1112
+ nginx_ingress = helm.index.Release("nginx_ingress",
1113
+ name=nginx-ingress,
1114
+ namespace=kube-system,
1115
+ repository=https://kubernetes.github.io/ingress-nginx,
1116
+ chart=ingress-nginx,
1117
+ set=[
1118
+ {
1119
+ name: controller.service.loadBalancerIP,
1120
+ value: nginx_ip.ip_address,
1121
+ },
1122
+ {
1123
+ name: controller.config.use-proxy-protocol,
1124
+ value: true,
1125
+ },
1126
+ {
1127
+ name: controller.service.annotations.service\\.beta\\.kubernetes\\.io/scw-loadbalancer-proxy-protocol-v2,
1128
+ value: true,
1129
+ },
1130
+ {
1131
+ name: controller.service.annotations.service\\.beta\\.kubernetes\\.io/scw-loadbalancer-zone,
1132
+ value: nginx_ip.zone,
1133
+ },
1134
+ {
1135
+ name: controller.service.externalTrafficPolicy,
1136
+ value: Local,
1137
+ },
1138
+ ])
1139
+ ```
1140
+
1141
+ ## Import
1142
+
1143
+ Kubernetes clusters can be imported using the `{region}/{id}`, e.g.
1144
+
1145
+ bash
1146
+
1147
+ ```sh
1148
+ $ pulumi import scaleway:index/kubernetesCluster:KubernetesCluster mycluster fr-par/11111111-1111-1111-1111-111111111111
1149
+ ```
1150
+
1151
+ :param str resource_name: The name of the resource.
1152
+ :param KubernetesClusterArgs args: The arguments to use to populate this resource's properties.
1153
+ :param pulumi.ResourceOptions opts: Options for the resource.
1154
+ """
1155
+ ...
1156
+ def __init__(__self__, resource_name: str, *args, **kwargs):
1157
+ resource_args, opts = _utilities.get_resource_args_opts(KubernetesClusterArgs, pulumi.ResourceOptions, *args, **kwargs)
1158
+ if resource_args is not None:
1159
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
1160
+ else:
1161
+ __self__._internal_init(resource_name, *args, **kwargs)
1162
+
1163
+ def _internal_init(__self__,
1164
+ resource_name: str,
1165
+ opts: Optional[pulumi.ResourceOptions] = None,
1166
+ admission_plugins: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1167
+ apiserver_cert_sans: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1168
+ auto_upgrade: Optional[pulumi.Input[Union['KubernetesClusterAutoUpgradeArgs', 'KubernetesClusterAutoUpgradeArgsDict']]] = None,
1169
+ autoscaler_config: Optional[pulumi.Input[Union['KubernetesClusterAutoscalerConfigArgs', 'KubernetesClusterAutoscalerConfigArgsDict']]] = None,
1170
+ cni: Optional[pulumi.Input[str]] = None,
1171
+ delete_additional_resources: Optional[pulumi.Input[bool]] = None,
1172
+ description: Optional[pulumi.Input[str]] = None,
1173
+ feature_gates: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1174
+ name: Optional[pulumi.Input[str]] = None,
1175
+ open_id_connect_config: Optional[pulumi.Input[Union['KubernetesClusterOpenIdConnectConfigArgs', 'KubernetesClusterOpenIdConnectConfigArgsDict']]] = None,
1176
+ private_network_id: Optional[pulumi.Input[str]] = None,
1177
+ project_id: Optional[pulumi.Input[str]] = None,
1178
+ region: Optional[pulumi.Input[str]] = None,
1179
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1180
+ type: Optional[pulumi.Input[str]] = None,
1181
+ version: Optional[pulumi.Input[str]] = None,
1182
+ __props__=None):
1183
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
1184
+ if not isinstance(opts, pulumi.ResourceOptions):
1185
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
1186
+ if opts.id is None:
1187
+ if __props__ is not None:
1188
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
1189
+ __props__ = KubernetesClusterArgs.__new__(KubernetesClusterArgs)
1190
+
1191
+ __props__.__dict__["admission_plugins"] = admission_plugins
1192
+ __props__.__dict__["apiserver_cert_sans"] = apiserver_cert_sans
1193
+ __props__.__dict__["auto_upgrade"] = auto_upgrade
1194
+ __props__.__dict__["autoscaler_config"] = autoscaler_config
1195
+ if cni is None and not opts.urn:
1196
+ raise TypeError("Missing required property 'cni'")
1197
+ __props__.__dict__["cni"] = cni
1198
+ if delete_additional_resources is None and not opts.urn:
1199
+ raise TypeError("Missing required property 'delete_additional_resources'")
1200
+ __props__.__dict__["delete_additional_resources"] = delete_additional_resources
1201
+ __props__.__dict__["description"] = description
1202
+ __props__.__dict__["feature_gates"] = feature_gates
1203
+ __props__.__dict__["name"] = name
1204
+ __props__.__dict__["open_id_connect_config"] = open_id_connect_config
1205
+ __props__.__dict__["private_network_id"] = private_network_id
1206
+ __props__.__dict__["project_id"] = project_id
1207
+ __props__.__dict__["region"] = region
1208
+ __props__.__dict__["tags"] = tags
1209
+ __props__.__dict__["type"] = type
1210
+ if version is None and not opts.urn:
1211
+ raise TypeError("Missing required property 'version'")
1212
+ __props__.__dict__["version"] = version
1213
+ __props__.__dict__["apiserver_url"] = None
1214
+ __props__.__dict__["created_at"] = None
1215
+ __props__.__dict__["kubeconfigs"] = None
1216
+ __props__.__dict__["organization_id"] = None
1217
+ __props__.__dict__["status"] = None
1218
+ __props__.__dict__["updated_at"] = None
1219
+ __props__.__dict__["upgrade_available"] = None
1220
+ __props__.__dict__["wildcard_dns"] = None
1221
+ secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["kubeconfigs"])
1222
+ opts = pulumi.ResourceOptions.merge(opts, secret_opts)
1223
+ super(KubernetesCluster, __self__).__init__(
1224
+ 'scaleway:index/kubernetesCluster:KubernetesCluster',
1225
+ resource_name,
1226
+ __props__,
1227
+ opts)
1228
+
1229
+ @staticmethod
1230
+ def get(resource_name: str,
1231
+ id: pulumi.Input[str],
1232
+ opts: Optional[pulumi.ResourceOptions] = None,
1233
+ admission_plugins: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1234
+ apiserver_cert_sans: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1235
+ apiserver_url: Optional[pulumi.Input[str]] = None,
1236
+ auto_upgrade: Optional[pulumi.Input[Union['KubernetesClusterAutoUpgradeArgs', 'KubernetesClusterAutoUpgradeArgsDict']]] = None,
1237
+ autoscaler_config: Optional[pulumi.Input[Union['KubernetesClusterAutoscalerConfigArgs', 'KubernetesClusterAutoscalerConfigArgsDict']]] = None,
1238
+ cni: Optional[pulumi.Input[str]] = None,
1239
+ created_at: Optional[pulumi.Input[str]] = None,
1240
+ delete_additional_resources: Optional[pulumi.Input[bool]] = None,
1241
+ description: Optional[pulumi.Input[str]] = None,
1242
+ feature_gates: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1243
+ kubeconfigs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['KubernetesClusterKubeconfigArgs', 'KubernetesClusterKubeconfigArgsDict']]]]] = None,
1244
+ name: Optional[pulumi.Input[str]] = None,
1245
+ open_id_connect_config: Optional[pulumi.Input[Union['KubernetesClusterOpenIdConnectConfigArgs', 'KubernetesClusterOpenIdConnectConfigArgsDict']]] = None,
1246
+ organization_id: Optional[pulumi.Input[str]] = None,
1247
+ private_network_id: Optional[pulumi.Input[str]] = None,
1248
+ project_id: Optional[pulumi.Input[str]] = None,
1249
+ region: Optional[pulumi.Input[str]] = None,
1250
+ status: Optional[pulumi.Input[str]] = None,
1251
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1252
+ type: Optional[pulumi.Input[str]] = None,
1253
+ updated_at: Optional[pulumi.Input[str]] = None,
1254
+ upgrade_available: Optional[pulumi.Input[bool]] = None,
1255
+ version: Optional[pulumi.Input[str]] = None,
1256
+ wildcard_dns: Optional[pulumi.Input[str]] = None) -> 'KubernetesCluster':
1257
+ """
1258
+ Get an existing KubernetesCluster resource's state with the given name, id, and optional extra
1259
+ properties used to qualify the lookup.
1260
+
1261
+ :param str resource_name: The unique name of the resulting resource.
1262
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
1263
+ :param pulumi.ResourceOptions opts: Options for the resource.
1264
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] admission_plugins: The list of [admission plugins](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/) to enable on the cluster.
1265
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] apiserver_cert_sans: Additional Subject Alternative Names for the Kubernetes API server certificate
1266
+ :param pulumi.Input[str] apiserver_url: The URL of the Kubernetes API server.
1267
+ :param pulumi.Input[Union['KubernetesClusterAutoUpgradeArgs', 'KubernetesClusterAutoUpgradeArgsDict']] auto_upgrade: The auto upgrade configuration.
1268
+ :param pulumi.Input[Union['KubernetesClusterAutoscalerConfigArgs', 'KubernetesClusterAutoscalerConfigArgsDict']] autoscaler_config: The configuration options for the [Kubernetes cluster autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler).
1269
+ :param pulumi.Input[str] cni: The Container Network Interface (CNI) for the Kubernetes cluster.
1270
+ > **Important:** Updates to this field will recreate a new resource.
1271
+ :param pulumi.Input[str] created_at: The creation date of the cluster.
1272
+ :param pulumi.Input[bool] delete_additional_resources: Delete additional resources like block volumes, load-balancers and the cluster's private network (if empty) that were created in Kubernetes on cluster deletion.
1273
+ > **Important:** Setting this field to `true` means that you will lose all your cluster data and network configuration when you delete your cluster.
1274
+ If you prefer keeping it, you should instead set it as `false`.
1275
+ :param pulumi.Input[str] description: A description for the Kubernetes cluster.
1276
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] feature_gates: The list of [feature gates](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/) to enable on the cluster.
1277
+ :param pulumi.Input[Sequence[pulumi.Input[Union['KubernetesClusterKubeconfigArgs', 'KubernetesClusterKubeconfigArgsDict']]]] kubeconfigs: The kubeconfig configuration file of the Kubernetes cluster
1278
+ :param pulumi.Input[str] name: The name for the Kubernetes cluster.
1279
+ :param pulumi.Input[Union['KubernetesClusterOpenIdConnectConfigArgs', 'KubernetesClusterOpenIdConnectConfigArgsDict']] open_id_connect_config: The OpenID Connect configuration of the cluster
1280
+ :param pulumi.Input[str] organization_id: The organization ID the cluster is associated with.
1281
+ :param pulumi.Input[str] private_network_id: The ID of the private network of the cluster.
1282
+
1283
+ > **Important:** Changes to this field will recreate a new resource.
1284
+
1285
+ > **Important:** Private Networks are now mandatory with Kapsule Clusters. If you have a legacy cluster (no `private_network_id` set),
1286
+ you can still set it now. In this case it will not destroy and recreate your cluster but migrate it to the Private Network.
1287
+ :param pulumi.Input[str] project_id: `project_id`) The ID of the project the cluster is associated with.
1288
+ :param pulumi.Input[str] region: `region`) The region in which the cluster should be created.
1289
+ :param pulumi.Input[str] status: The status of the Kubernetes cluster.
1290
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the Kubernetes cluster.
1291
+ :param pulumi.Input[str] type: The type of Kubernetes cluster. Possible values are:
1292
+
1293
+ - for mutualized clusters: `kapsule` or `multicloud`
1294
+
1295
+ - for dedicated Kapsule clusters: `kapsule-dedicated-4`, `kapsule-dedicated-8` or `kapsule-dedicated-16`.
1296
+
1297
+ - for dedicated Kosmos clusters: `multicloud-dedicated-4`, `multicloud-dedicated-8` or `multicloud-dedicated-16`.
1298
+ :param pulumi.Input[str] updated_at: The last update date of the cluster.
1299
+ :param pulumi.Input[bool] upgrade_available: Set to `true` if a newer Kubernetes version is available.
1300
+ :param pulumi.Input[str] version: The version of the Kubernetes cluster.
1301
+ :param pulumi.Input[str] wildcard_dns: The DNS wildcard that points to all ready nodes.
1302
+ """
1303
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
1304
+
1305
+ __props__ = _KubernetesClusterState.__new__(_KubernetesClusterState)
1306
+
1307
+ __props__.__dict__["admission_plugins"] = admission_plugins
1308
+ __props__.__dict__["apiserver_cert_sans"] = apiserver_cert_sans
1309
+ __props__.__dict__["apiserver_url"] = apiserver_url
1310
+ __props__.__dict__["auto_upgrade"] = auto_upgrade
1311
+ __props__.__dict__["autoscaler_config"] = autoscaler_config
1312
+ __props__.__dict__["cni"] = cni
1313
+ __props__.__dict__["created_at"] = created_at
1314
+ __props__.__dict__["delete_additional_resources"] = delete_additional_resources
1315
+ __props__.__dict__["description"] = description
1316
+ __props__.__dict__["feature_gates"] = feature_gates
1317
+ __props__.__dict__["kubeconfigs"] = kubeconfigs
1318
+ __props__.__dict__["name"] = name
1319
+ __props__.__dict__["open_id_connect_config"] = open_id_connect_config
1320
+ __props__.__dict__["organization_id"] = organization_id
1321
+ __props__.__dict__["private_network_id"] = private_network_id
1322
+ __props__.__dict__["project_id"] = project_id
1323
+ __props__.__dict__["region"] = region
1324
+ __props__.__dict__["status"] = status
1325
+ __props__.__dict__["tags"] = tags
1326
+ __props__.__dict__["type"] = type
1327
+ __props__.__dict__["updated_at"] = updated_at
1328
+ __props__.__dict__["upgrade_available"] = upgrade_available
1329
+ __props__.__dict__["version"] = version
1330
+ __props__.__dict__["wildcard_dns"] = wildcard_dns
1331
+ return KubernetesCluster(resource_name, opts=opts, __props__=__props__)
1332
+
1333
+ @property
1334
+ @pulumi.getter(name="admissionPlugins")
1335
+ def admission_plugins(self) -> pulumi.Output[Optional[Sequence[str]]]:
1336
+ """
1337
+ The list of [admission plugins](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/) to enable on the cluster.
1338
+ """
1339
+ return pulumi.get(self, "admission_plugins")
1340
+
1341
+ @property
1342
+ @pulumi.getter(name="apiserverCertSans")
1343
+ def apiserver_cert_sans(self) -> pulumi.Output[Optional[Sequence[str]]]:
1344
+ """
1345
+ Additional Subject Alternative Names for the Kubernetes API server certificate
1346
+ """
1347
+ return pulumi.get(self, "apiserver_cert_sans")
1348
+
1349
+ @property
1350
+ @pulumi.getter(name="apiserverUrl")
1351
+ def apiserver_url(self) -> pulumi.Output[str]:
1352
+ """
1353
+ The URL of the Kubernetes API server.
1354
+ """
1355
+ return pulumi.get(self, "apiserver_url")
1356
+
1357
+ @property
1358
+ @pulumi.getter(name="autoUpgrade")
1359
+ def auto_upgrade(self) -> pulumi.Output['outputs.KubernetesClusterAutoUpgrade']:
1360
+ """
1361
+ The auto upgrade configuration.
1362
+ """
1363
+ return pulumi.get(self, "auto_upgrade")
1364
+
1365
+ @property
1366
+ @pulumi.getter(name="autoscalerConfig")
1367
+ def autoscaler_config(self) -> pulumi.Output['outputs.KubernetesClusterAutoscalerConfig']:
1368
+ """
1369
+ The configuration options for the [Kubernetes cluster autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler).
1370
+ """
1371
+ return pulumi.get(self, "autoscaler_config")
1372
+
1373
+ @property
1374
+ @pulumi.getter
1375
+ def cni(self) -> pulumi.Output[str]:
1376
+ """
1377
+ The Container Network Interface (CNI) for the Kubernetes cluster.
1378
+ > **Important:** Updates to this field will recreate a new resource.
1379
+ """
1380
+ return pulumi.get(self, "cni")
1381
+
1382
+ @property
1383
+ @pulumi.getter(name="createdAt")
1384
+ def created_at(self) -> pulumi.Output[str]:
1385
+ """
1386
+ The creation date of the cluster.
1387
+ """
1388
+ return pulumi.get(self, "created_at")
1389
+
1390
+ @property
1391
+ @pulumi.getter(name="deleteAdditionalResources")
1392
+ def delete_additional_resources(self) -> pulumi.Output[bool]:
1393
+ """
1394
+ Delete additional resources like block volumes, load-balancers and the cluster's private network (if empty) that were created in Kubernetes on cluster deletion.
1395
+ > **Important:** Setting this field to `true` means that you will lose all your cluster data and network configuration when you delete your cluster.
1396
+ If you prefer keeping it, you should instead set it as `false`.
1397
+ """
1398
+ return pulumi.get(self, "delete_additional_resources")
1399
+
1400
+ @property
1401
+ @pulumi.getter
1402
+ def description(self) -> pulumi.Output[Optional[str]]:
1403
+ """
1404
+ A description for the Kubernetes cluster.
1405
+ """
1406
+ return pulumi.get(self, "description")
1407
+
1408
+ @property
1409
+ @pulumi.getter(name="featureGates")
1410
+ def feature_gates(self) -> pulumi.Output[Optional[Sequence[str]]]:
1411
+ """
1412
+ The list of [feature gates](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/) to enable on the cluster.
1413
+ """
1414
+ return pulumi.get(self, "feature_gates")
1415
+
1416
+ @property
1417
+ @pulumi.getter
1418
+ def kubeconfigs(self) -> pulumi.Output[Sequence['outputs.KubernetesClusterKubeconfig']]:
1419
+ """
1420
+ The kubeconfig configuration file of the Kubernetes cluster
1421
+ """
1422
+ return pulumi.get(self, "kubeconfigs")
1423
+
1424
+ @property
1425
+ @pulumi.getter
1426
+ def name(self) -> pulumi.Output[str]:
1427
+ """
1428
+ The name for the Kubernetes cluster.
1429
+ """
1430
+ return pulumi.get(self, "name")
1431
+
1432
+ @property
1433
+ @pulumi.getter(name="openIdConnectConfig")
1434
+ def open_id_connect_config(self) -> pulumi.Output['outputs.KubernetesClusterOpenIdConnectConfig']:
1435
+ """
1436
+ The OpenID Connect configuration of the cluster
1437
+ """
1438
+ return pulumi.get(self, "open_id_connect_config")
1439
+
1440
+ @property
1441
+ @pulumi.getter(name="organizationId")
1442
+ def organization_id(self) -> pulumi.Output[str]:
1443
+ """
1444
+ The organization ID the cluster is associated with.
1445
+ """
1446
+ return pulumi.get(self, "organization_id")
1447
+
1448
+ @property
1449
+ @pulumi.getter(name="privateNetworkId")
1450
+ def private_network_id(self) -> pulumi.Output[Optional[str]]:
1451
+ """
1452
+ The ID of the private network of the cluster.
1453
+
1454
+ > **Important:** Changes to this field will recreate a new resource.
1455
+
1456
+ > **Important:** Private Networks are now mandatory with Kapsule Clusters. If you have a legacy cluster (no `private_network_id` set),
1457
+ you can still set it now. In this case it will not destroy and recreate your cluster but migrate it to the Private Network.
1458
+ """
1459
+ return pulumi.get(self, "private_network_id")
1460
+
1461
+ @property
1462
+ @pulumi.getter(name="projectId")
1463
+ def project_id(self) -> pulumi.Output[str]:
1464
+ """
1465
+ `project_id`) The ID of the project the cluster is associated with.
1466
+ """
1467
+ return pulumi.get(self, "project_id")
1468
+
1469
+ @property
1470
+ @pulumi.getter
1471
+ def region(self) -> pulumi.Output[str]:
1472
+ """
1473
+ `region`) The region in which the cluster should be created.
1474
+ """
1475
+ return pulumi.get(self, "region")
1476
+
1477
+ @property
1478
+ @pulumi.getter
1479
+ def status(self) -> pulumi.Output[str]:
1480
+ """
1481
+ The status of the Kubernetes cluster.
1482
+ """
1483
+ return pulumi.get(self, "status")
1484
+
1485
+ @property
1486
+ @pulumi.getter
1487
+ def tags(self) -> pulumi.Output[Optional[Sequence[str]]]:
1488
+ """
1489
+ The tags associated with the Kubernetes cluster.
1490
+ """
1491
+ return pulumi.get(self, "tags")
1492
+
1493
+ @property
1494
+ @pulumi.getter
1495
+ def type(self) -> pulumi.Output[str]:
1496
+ """
1497
+ The type of Kubernetes cluster. Possible values are:
1498
+
1499
+ - for mutualized clusters: `kapsule` or `multicloud`
1500
+
1501
+ - for dedicated Kapsule clusters: `kapsule-dedicated-4`, `kapsule-dedicated-8` or `kapsule-dedicated-16`.
1502
+
1503
+ - for dedicated Kosmos clusters: `multicloud-dedicated-4`, `multicloud-dedicated-8` or `multicloud-dedicated-16`.
1504
+ """
1505
+ return pulumi.get(self, "type")
1506
+
1507
+ @property
1508
+ @pulumi.getter(name="updatedAt")
1509
+ def updated_at(self) -> pulumi.Output[str]:
1510
+ """
1511
+ The last update date of the cluster.
1512
+ """
1513
+ return pulumi.get(self, "updated_at")
1514
+
1515
+ @property
1516
+ @pulumi.getter(name="upgradeAvailable")
1517
+ def upgrade_available(self) -> pulumi.Output[bool]:
1518
+ """
1519
+ Set to `true` if a newer Kubernetes version is available.
1520
+ """
1521
+ return pulumi.get(self, "upgrade_available")
1522
+
1523
+ @property
1524
+ @pulumi.getter
1525
+ def version(self) -> pulumi.Output[str]:
1526
+ """
1527
+ The version of the Kubernetes cluster.
1528
+ """
1529
+ return pulumi.get(self, "version")
1530
+
1531
+ @property
1532
+ @pulumi.getter(name="wildcardDns")
1533
+ def wildcard_dns(self) -> pulumi.Output[str]:
1534
+ """
1535
+ The DNS wildcard that points to all ready nodes.
1536
+ """
1537
+ return pulumi.get(self, "wildcard_dns")
1538
+