createCluster method
- required String name,
- required VpcConfigRequest resourcesVpcConfig,
- required String roleArn,
- CreateAccessConfigRequest? accessConfig,
- bool? bootstrapSelfManagedAddons,
- String? clientRequestToken,
- ComputeConfigRequest? computeConfig,
- ControlPlaneScalingConfig? controlPlaneScalingConfig,
- bool? deletionProtection,
- List<
EncryptionConfig> ? encryptionConfig, - KubernetesNetworkConfigRequest? kubernetesNetworkConfig,
- Logging? logging,
- OutpostConfigRequest? outpostConfig,
- RemoteNetworkConfigRequest? remoteNetworkConfig,
- StorageConfigRequest? storageConfig,
- Map<
String, String> ? tags, - UpgradePolicyRequest? upgradePolicy,
- String? version,
- ZonalShiftConfigRequest? zonalShiftConfig,
Creates an Amazon EKS control plane.
The Amazon EKS control plane consists of control plane instances that run
the Kubernetes software, such as etcd and the API server. The
control plane runs in an account managed by Amazon Web Services, and the
Kubernetes API is exposed by the Amazon EKS API server endpoint. Each
Amazon EKS cluster control plane is single tenant and unique. It runs on
its own set of Amazon EC2 instances.
The cluster control plane is provisioned across multiple Availability
Zones and fronted by an Elastic Load Balancing Network Load Balancer.
Amazon EKS also provisions elastic network interfaces in your VPC subnets
to provide connectivity from the control plane instances to the nodes (for
example, to support kubectl exec, logs, and
proxy data flows).
Amazon EKS nodes run in your Amazon Web Services account and connect to your cluster's control plane over the Kubernetes API server endpoint and a certificate file that is created for your cluster.
You can use the endpointPublicAccess and
endpointPrivateAccess parameters to enable or disable public
and private access to your cluster's Kubernetes API server endpoint. By
default, public access is enabled, and private access is disabled. The
endpoint domain name and IP address family depends on the value of the
ipFamily for the cluster. For more information, see Amazon
EKS Cluster Endpoint Access Control in the Amazon EKS User
Guide .
You can use the logging parameter to enable or disable
exporting the Kubernetes control plane logs for your cluster to CloudWatch
Logs. By default, cluster control plane logs aren't exported to CloudWatch
Logs. For more information, see Amazon
EKS Cluster Control Plane Logs in the Amazon EKS User Guide
.
In most cases, it takes several minutes to create a cluster. After you
create an Amazon EKS cluster, you must configure your Kubernetes tooling
to communicate with the API server and launch nodes into your cluster. For
more information, see Allowing
users to access your cluster and Launching
Amazon EKS nodes in the Amazon EKS User Guide.
May throw ClientException.
May throw InvalidParameterException.
May throw ResourceInUseException.
May throw ResourceLimitExceededException.
May throw ServerException.
May throw ServiceUnavailableException.
May throw UnsupportedAvailabilityZoneException.
Parameter name :
The unique name to give to your cluster. The name can contain only
alphanumeric characters (case-sensitive), hyphens, and underscores. It
must start with an alphanumeric character and can't be longer than 100
characters. The name must be unique within the Amazon Web Services Region
and Amazon Web Services account that you're creating the cluster in.
Parameter resourcesVpcConfig :
The VPC configuration that's used by the cluster control plane. Amazon EKS
VPC resources have specific requirements to work properly with Kubernetes.
For more information, see Cluster
VPC Considerations and Cluster
Security Group Considerations in the Amazon EKS User Guide. You
must specify at least two subnets. You can specify up to five security
groups. However, we recommend that you use a dedicated security group for
your cluster control plane.
Parameter roleArn :
The Amazon Resource Name (ARN) of the IAM role that provides permissions
for the Kubernetes control plane to make calls to Amazon Web Services API
operations on your behalf. For more information, see Amazon
EKS Service IAM Role in the Amazon EKS User Guide .
Parameter accessConfig :
The access configuration for the cluster.
Parameter bootstrapSelfManagedAddons :
If you set this value to False when creating a cluster, the
default networking add-ons will not be installed.
The default networking add-ons include vpc-cni,
coredns, and kube-proxy.
Use this option when you plan to install third-party alternative add-ons or self-manage the default networking add-ons.
Parameter clientRequestToken :
A unique, case-sensitive identifier that you provide to ensure the
idempotency of the request.
Parameter computeConfig :
Enable or disable the compute capability of EKS Auto Mode when creating
your EKS Auto Mode cluster. If the compute capability is enabled, EKS Auto
Mode will create and delete EC2 Managed Instances in your Amazon Web
Services account
Parameter controlPlaneScalingConfig :
The control plane scaling tier configuration. For more information, see
EKS Provisioned Control Plane in the Amazon EKS User Guide.
Parameter deletionProtection :
Indicates whether to enable deletion protection for the cluster. When
enabled, the cluster cannot be deleted unless deletion protection is first
disabled. This helps prevent accidental cluster deletion. Default value is
false.
Parameter encryptionConfig :
The encryption configuration for the cluster.
Parameter kubernetesNetworkConfig :
The Kubernetes network configuration for the cluster.
Parameter logging :
Enable or disable exporting the Kubernetes control plane logs for your
cluster to CloudWatch Logs . By default, cluster control plane logs aren't
exported to CloudWatch Logs . For more information, see Amazon
EKS Cluster control plane logs in the Amazon EKS User Guide
.
Parameter outpostConfig :
An object representing the configuration of your local Amazon EKS cluster
on an Amazon Web Services Outpost. Before creating a local cluster on an
Outpost, review Local
clusters for Amazon EKS on Amazon Web Services Outposts in the
Amazon EKS User Guide. This object isn't available for creating
Amazon EKS clusters on the Amazon Web Services cloud.
Parameter remoteNetworkConfig :
The configuration in the cluster for EKS Hybrid Nodes. You can add,
change, or remove this configuration after the cluster is created.
Parameter storageConfig :
Enable or disable the block storage capability of EKS Auto Mode when
creating your EKS Auto Mode cluster. If the block storage capability is
enabled, EKS Auto Mode will create and delete EBS volumes in your Amazon
Web Services account.
Parameter tags :
Metadata that assists with categorization and organization. Each tag
consists of a key and an optional value. You define both. Tags don't
propagate to any other cluster or Amazon Web Services resources.
Parameter upgradePolicy :
New clusters, by default, have extended support enabled. You can disable
extended support when creating a cluster by setting this value to
STANDARD.
Parameter version :
The desired Kubernetes version for your cluster. If you don't specify a
value here, the default version available in Amazon EKS is used.
Parameter zonalShiftConfig :
Enable or disable ARC zonal shift for the cluster. If zonal shift is
enabled, Amazon Web Services configures zonal autoshift for the cluster.
Zonal shift is a feature of Amazon Application Recovery Controller (ARC). ARC zonal shift is designed to be a temporary measure that allows you to move traffic for a resource away from an impaired AZ until the zonal shift expires or you cancel it. You can extend the zonal shift if necessary.
You can start a zonal shift for an Amazon EKS cluster, or you can allow Amazon Web Services to do it for you by enabling zonal autoshift. This shift updates the flow of east-to-west network traffic in your cluster to only consider network endpoints for Pods running on worker nodes in healthy AZs. Additionally, any ALB or NLB handling ingress traffic for applications in your Amazon EKS cluster will automatically route traffic to targets in the healthy AZs. For more information about zonal shift in EKS, see Learn about Amazon Application Recovery Controller (ARC) Zonal Shift in Amazon EKS in the Amazon EKS User Guide .
Implementation
Future<CreateClusterResponse> createCluster({
required String name,
required VpcConfigRequest resourcesVpcConfig,
required String roleArn,
CreateAccessConfigRequest? accessConfig,
bool? bootstrapSelfManagedAddons,
String? clientRequestToken,
ComputeConfigRequest? computeConfig,
ControlPlaneScalingConfig? controlPlaneScalingConfig,
bool? deletionProtection,
List<EncryptionConfig>? encryptionConfig,
KubernetesNetworkConfigRequest? kubernetesNetworkConfig,
Logging? logging,
OutpostConfigRequest? outpostConfig,
RemoteNetworkConfigRequest? remoteNetworkConfig,
StorageConfigRequest? storageConfig,
Map<String, String>? tags,
UpgradePolicyRequest? upgradePolicy,
String? version,
ZonalShiftConfigRequest? zonalShiftConfig,
}) async {
final $payload = <String, dynamic>{
'name': name,
'resourcesVpcConfig': resourcesVpcConfig,
'roleArn': roleArn,
if (accessConfig != null) 'accessConfig': accessConfig,
if (bootstrapSelfManagedAddons != null)
'bootstrapSelfManagedAddons': bootstrapSelfManagedAddons,
'clientRequestToken': clientRequestToken ?? _s.generateIdempotencyToken(),
if (computeConfig != null) 'computeConfig': computeConfig,
if (controlPlaneScalingConfig != null)
'controlPlaneScalingConfig': controlPlaneScalingConfig,
if (deletionProtection != null) 'deletionProtection': deletionProtection,
if (encryptionConfig != null) 'encryptionConfig': encryptionConfig,
if (kubernetesNetworkConfig != null)
'kubernetesNetworkConfig': kubernetesNetworkConfig,
if (logging != null) 'logging': logging,
if (outpostConfig != null) 'outpostConfig': outpostConfig,
if (remoteNetworkConfig != null)
'remoteNetworkConfig': remoteNetworkConfig,
if (storageConfig != null) 'storageConfig': storageConfig,
if (tags != null) 'tags': tags,
if (upgradePolicy != null) 'upgradePolicy': upgradePolicy,
if (version != null) 'version': version,
if (zonalShiftConfig != null) 'zonalShiftConfig': zonalShiftConfig,
};
final response = await _protocol.send(
payload: $payload,
method: 'POST',
requestUri: '/clusters',
exceptionFnMap: _exceptionFns,
);
return CreateClusterResponse.fromJson(response);
}